我有一个简单的表单,带有一个inputText和2个commandButtons。 inputText显示支持bean的值正确,但是当我第一次改变该值时,set方法不被调用,因此表单提交一个空值。当我再次更改它时,则调用set方法,并且一切正常。什么原因,我该如何解决?<h:inputText值不更新
<h:panelGroup id="chatId">
<h:panelGrid rendered="#{chat.validUser == true}">
<h:form id="sendMsgForm" >
<h:panelGroup id="chatId2">
<h:inputText id="chatInput" value="#{chat.msgTo}" autocomplete="off" >
<f:ajax execute="@this @form" />
</h:inputText>
<h:commandButton value="Send" id="sendButton" action="#{chat.send}">
<f:ajax render=":chatLogId :chatId" />
</h:commandButton>
<h:commandButton value="Bye" action="#{chat.bye}">
<f:ajax render=":chatLogId :chatId :chatUserId" />
</h:commandButton>
</h:panelGroup>
</h:form>
</h:panelGrid>
</h:panelGroup>
的支持bean代码:
@SessionScoped
public class Chat implements Serializable, ActionListener, ValueChangeListener {
private String msgTo = "Start typing...";
private boolean validUser = false;
public void bye() {
validUser = false;
tc.disconnect();
}
public void send() {
try {
tc.sendMessage(msgTo);
setMsgTo("");
} catch (Exception e) {
e.printStackTrace();
}
}
// ...
但他在第一次和第二次更改输入字段值。所以它应该在两个时间都有效。或者我错过了什么? – 2011-03-30 06:32:09
感谢您对Matt和BalusC的回复。我试图在commandButton中只有f:ajax,并且只是inputText,但行为仍然相同。当我第一次改变输入字段并按下回车键,或者点击按钮时,输入字段被重置为默认的“开始输入...”。第二次,我改变了输入字段,一切正常。这就像我的输入是第一次在别的地方。谢谢。 Binh – Binh 2011-03-30 10:14:39
这些更改是否重新发布到服务器? – BalusC 2011-03-30 11:11:16