考虑一下代码段:
<h:form>
<hr/>
<h:panelGrid columns="3">
Name:
<h:inputText id="nameId" value="#{ajaxBean.name}"
validator="nameValidator"
f5:placeholder="Enter your name ..."/>
<h:message id="msgNameId" showDetail="true"
showSummary="true" for="nameId"
style="color: red;"/>
Surname:
<h:inputText id="surnameId" value="#{ajaxBean.surname}"
validator="nameValidator"
f5:placeholder="Enter your surname ..."/>
<h:message id="msgSurnameId" showDetail="true"
showSummary="true" for="surnameId"
style="color: red;"/>
</h:panelGrid>
<h:commandButton value="Submit">
<f:ajax execute="@form"
render="@form" listener="#
{ajaxBean.upperCaseNameAndSurname()}"/
</h:commandButton>
<h:commandButton value="Cancel">
<f:ajax execute="@this"
render="@form"/>
</h:commandButton>
<h:commandButton value="Clear/Reset">
<f:ajax execute="@this"
render="@form"
listener="#{ajaxBean.cancelNameAndSurname()}"/>
</h:commandButton>
</h:form>
resetValues= "true"
似乎只有在component ids
的{{1}}属性render
属性中明确提到<f:ajax>
时才有效}按钮。
即Submit
而不是render="nameId msgNameId surnameId msgSurnameId"
这两种形式的差异究竟是什么?
如果render="@form"
按钮的after re-render
属性的值为(@form)
,则无效值仍为render
。
我绝对记得BalusC的一条评论,
验证阶段由于转换或验证而失败时 任何地方都出错,
Submit
通过验证的组件会 返回successfully
以及local value
验证将返回的组件failed
。
如果名称有效且姓氏不是(或任何其他涉及无效值的组合),则在submitted value
和submit
之后,输入字段*(即有效字段)*为名称未清除。即使clear/ reset
为whole form
,我也只会看到已清除验证失败的字段。为什么呢?
以上评论是否表示与上述问题存在某种关系?
re-rendered
方法只是做这件事 -
cancelNameAndSurname
我确信解决此问题的解决方案之一是 -
name = ""
surname = ""