以下对话框中的InputText字段保留以前的值,即使我在调用show()之前将其设置为空白。第一次调用show()时,inputText字段仅显示为空白。我的bean是会话范围的。
<p:dialog id="dlgId" widgetVar="dlgVar" dynamic="true">
<h:form>
<h:panelGrid columns="1">
<h:outputLabel for="nametext" value="Name" />
<p:inputText id="nametext" value="#{myBean.name}" />
</h:panelGrid>
<p:commandButton value="Save" actionListener="#{myBean.saveAction}" />
</h:form>
public void add(TreeNode selectedTreeNode) {
setName("");
RequestContext.getCurrentInstance().execute("PF('dlgVar').show()");
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
如何让inputTEext字段显示我在调用show()之前设置的值,而不是之前用户输入的值?
答案 0 :(得分:2)
问题是:您需要更新表单。为此,您可以使用其中一种解决方案。
解决方案1:从您的xhtml更新
<h:form id="form">
<h:panelGrid columns="1">
<h:outputLabel for="nametext" value="Name" />
<p:inputText id="nametext" value="#{myBean.name}" />
</h:panelGrid>
<p:commandButton value="Save" actionListener="#{myBean.saveAction}" update=":form" />
</h:form>
解决方案2:从您的managedBean
更新它YourXhtml
<h:form id="form">
...
</h:form>
YourManagedBean
public void saveAction() {
...
name = "";
RequestContext.getCurrentInstance().update(":form");
}
您还可以阅读此帖Can I update a JSF component from a JSF backing bean method?。
解决方案3:使用Ajax事件更新它
您还可以添加ajax事件
<p:commandButton value="Save" type="button" >
<p:ajax event="click" listener="#{myBean.saveAction}" update=":form"/>
</p:commandButton>