3

单击JSF中的commandButton后是否可以重置inputText的值?inputText UIElement 提供了 ResetValue 方法,所以我尝试了这样的方法:

<h:inputText  id="measurementadd" binding="#{inputTextMeasurement}">
    <f:validateRegex pattern="[a-zA-Z ]*"/>
    <f:ajax event="keyup" render="measurementaddmessage submit" execute="@this"/>
<h:inputText>
<p:commandButton id="submit" action="#{Bean.addMeasurement(inputTextMeasurement.value)}" 
value="submit" update="dataTable measurementadd measurementaddmessage" 
disabled="#{empty inputTextMeasurement.value or facesContext.validationFailed }" >
    <f:ajax event="mouseup" execute="#{inputTextMeasurement.resetValue()}" />
</p:commandButton>  
<h:messages for="measurementadd" id="measurementaddmessage"/>  

但是在单击按钮后, inputTextMeasurement 不会重置它的值。

有人知道一个好的解决方法吗?

我正在寻找没有 JS 和 JAVA 的解决方案,所以在 JSF 中实现会非常酷。

4

3 回答 3

6

您的错误在execute属性中:

<f:ajax event="mouseup" execute="#{inputTextMeasurement.resetValue()}" />

execute属性应表示以空格分隔的客户端 ID 集合,以包含在 ajax 请求的处理/解码中。但是,您在那里指定了一个侦听器方法。

您需要该listener属性:

<f:ajax listener="#{inputTextMeasurement.resetValue()}" />

(我省略event了,因为它在这里默认click已经是正确的)

有趣的细节是<f:ajax>同一段代码中的另一个以exeucte正确的方式使用了该属性。


与具体问题无关,你看过<p:resetInput>吗?这在 bean 中保存了一个 ajax 侦听器方法。将整个替换<f:ajax>

<p:resetInput target="measurementadd" />
于 2013-11-14T17:17:26.087 回答
0

为什么我们不直接使用

<input type="Reset"/>

这个对我来说很好用!???

于 2014-07-03T14:10:46.373 回答
0

我已经解决了我的问题如下

<p:commandButton id="submit" action="#{Bean.addMeasurement(inputTextMeasurement)}">

发回 bean UIInput 组件。在 back bean 中获取和重置值。

public void addMeasurement(UIInput    
   String msr = (String) inputTextMeasurement.getValue()
   inputTextMeasurement.resetValue();
}
于 2016-02-29T13:17:20.873 回答