在视图范围的托管 bean 中,我<p:resetInput>
用来清除相应托管 bean 中的属性所持有的值,例如,
<p:commandButton value="Reset" update="panel" process="@this">
<p:resetInput target="panel" />
</p:commandButton>
这工作正常。
我有一个提交按钮<p:commandButton>
,如果验证成功,按下该按钮会导致将提交的值插入数据库。
<p:remoteCommand name="updateTable" update="dataTable"/>
<p:panel id="panel" header="New">
<p:outputLabel for="property1" value="property1"/>
<p:inputText id="property1" value="#{bean.property1}" required="true">
<f:validateLength minimum="2" maximum="100"/>
</p:inputText>
<p:message for="property1" showSummary="false"/>
<p:commandButton id="btnSubmit"
update="panel messages"
oncomplete="if(!args.validationFailed) {updateTable();}"
actionListener="#{bean.insert}"
value="Save"/>
<p:commandButton value="Reset" update="panel" process="@this">
<p:resetInput target="panel" />
</p:commandButton>
</p:panel>
命令按钮调用insert()
托管 bean 中的方法,该方法定义如下。
public void insert() {
if (service.insert(property1)) {
//...Popup a success message.
reset(); //Invoke the following private method.
} else {
//...Show the cause of the failure.
}
}
private void reset() {
property1 = null; //Set this property of type String to null.
}
如果reset()
省略此方法,则<p:inputText>
不会明显清除,但如果我按下 XHTML 中所示的重置按钮,<p:inputText>
应该清除但它没有。
展示示例演示了完全相同的内容。因此,这种行为似乎已记录在案,但我不明白为什么不<p:resetInut>
清除 的值property1
,如果该reset()
方法被省略,在这种情况下?