【发布时间】:2014-05-06 09:41:56
【问题描述】:
JSF bean 通常不会在验证失败时更新,这在某些情况下会导致非常丑陋的效果,例如,当使用 facet="output" 或 p:inplace 时:
<h:form>
<h:panelGrid id="panel" columns="3" cellpadding="2">
<p:outputLabel value="My Field" for="myfield" />
<p:inputText id="myfield" value="#{test.myField}" required="true" />
<p:message for="myfield" />
<h:outputText value="Checkbox: " />
<p:inplace id="checkboxInplace" effect="none">
<f:facet name="output">#{test.myBooleanText}</f:facet>
<f:facet name="input">
<h:selectBooleanCheckbox value="#{test.myBoolean}" />
</f:facet>
</p:inplace>
<p:spacer />
</h:panelGrid>
<p:commandButton id="refresh" icon="ui-icon-refresh" update="panel" process="@form"/>
</h:form>
输出方面定义了就地标签,应该本地化而不是标准标签:
private boolean myBoolean;
public String getMyBooleanText() {
return myBoolean ? "Ja" : "Nein";
}
但是,当验证失败时,就地输出方面会显示复选框的旧值,而不是实际值。如果单击它,则会显示实际值。
如何解决该问题并正确实现输出?将值提交给 bean 将是最好的,因为我对客户端和服务器上的值的一致状态没有问题,只要实际不执行任何操作(由验证断言)。
【问题讨论】:
标签: validation jsf primefaces