ビュー スコープのマネージド 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()