getResponse
和的返回类型应该是什么submit
,并且两者都是必需的?
在firstForm
或中输入猜测时SecondForm
,如何将该猜测回显到同一网页?
要么使用 ajax,所以不重新加载同一页面
或者
加载一个新页面,guessResults.xhtml
例如,哪个 echo 是猜测。
支持豆,NextClient
:
package dur.beans;
import dur.jpa.Client;
import dur.jpa.ClientFacadeLocal;
import java.util.concurrent.atomic.AtomicInteger;
import javax.ejb.EJB;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
@Named("nextClient")
@ApplicationScoped
public class NextClient implements NextClientLocal {
@EJB
private ClientFacadeLocal clientFacade;
private AtomicInteger next = new AtomicInteger(1009);
private AtomicInteger guess = new AtomicInteger(0);
private final boolean correct = true;
@Override
public String getNext() {
next.addAndGet(1);
Client client = clientFacade.find(next.intValue());
return client.toString();
}
@Override
public void setGuess(int guessInt) {
guess = new AtomicInteger(guessInt);
}
@Override
public int getGuess() {
return guess.intValue();
}
//not sure what do with these methods
@Override
public String getResponse() {
return "the guess of " + guess.intValue() + " is " + correct;
}
@Override
public String submit() {
return "the guess of " + guess.intValue() + " is " + correct;
}
}
facelets模板客户端,next.xhtml
:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:head></h:head>
<h:body>
This and everything before will be ignored
<ui:composition template="template.xhtml">
<ui:define name="navigation">
<ui:include src="menu.xhtml"/>
</ui:define>
<ui:define name="main">
<h1>next bird</h1>
<p>
#{nextClient.next}
</p>
<p>
<h:panelGroup id="firstPanel">
<h:form id="firstForm">
<h:outputLabel for="input" value="First form input" />
<h:inputText id="input" value="#{nextClient.guess}" required="true" />
<h:commandButton value="Submit form" action="#{nextClient.submit}">
<f:ajax execute="@form" render="@form :secondPanel :secondForm :messages" />
</h:commandButton>
<h:message for="input" />
</h:form>
</h:panelGroup>
<h:panelGroup id="secondPanel">
<h:form id="secondForm">
<h:outputLabel for="input" value="Second form input" />
<h:inputText id="input" value="#{nextClient.guess}" required="true" />
<h:commandButton value="Submit other form" action="#{nextClient.submit}">
<f:ajax execute="@form" render="@form :firstPanel :firstForm :messages" />
</h:commandButton>
<h:message for="input" />
</h:form>
</h:panelGroup>
<h:messages id="messages" globalOnly="true" layout="table" />
</p>
</ui:define>
</ui:composition>
This and everything after will be ignored
</h:body>
</html>
也可以看看:
https://javaserverfaces.java.net/nonav/docs/2.0/pdldocs/facelets/h/commandButton.html
http://docs.oracle.com/javaee/7/tutorial/doc/jsf-facelets003.htm
我正在使用 CDI 在 Glassfish 上运行 facelets,所以我正在使用@Named
而不是 @ManagedBean
- 上面的一些文档更适合 . @ManagedBean
,但我不确定这有多重要。
目标是比“hello world”好一步,“hello world,你的猜测是”会是一个很好的结果。如果有特定的手册,我不介意针对该特定文档的 RTFM。Oracle 文档可能是 facelets 的最佳选择?
代码: