如何重置JSF Primefaces中的inputText字段

时间:2017-06-22 11:26:40

标签: jsf primefaces

以下对话框中的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()之前设置的值,而不是之前用户输入的值?

1 个答案:

答案 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>