【发布时间】:2011-05-31 11:34:35
【问题描述】:
我遇到了 Richfaces 客户端验证问题。这是我的 xhtml 页面示例;
<h:form id="deneForm">
<rich:panel>
<h:panelGrid columns="2">
<h:inputText value="#{denemeBean.name}" id="name" required="true" requiredMessage="Not null please">
<f:validateLength minimum="3" maximum="8" />
<f:validateRequired />
<rich:validator />
</h:inputText>
<rich:message for="name" />
<h:outputText value="Email" />
<h:outputText value="Age" />
<h:inputText value="#{denemeBean.age}" id="age" required="true" requiredMessage="Not null please">
<f:validateLongRange minimum="18" maximum="99"/>
<rich:validator />
</h:inputText>
<rich:message for="age" />
</h:panelGrid>
<h:commandButton value="Submit" action="#{denemeBean.success}"> </h:commandButton>
</rich:panel>
</h:form>
当我将值写入文本框时,我可以看到验证错误,但是当我按下提交按钮时,客户端脚本未激活并且表单仍然提交。服务器端验证开始并显示“请不要为空”。如何在按下提交按钮时触发客户端验证?
使用:mojarra 2,richfaces 4
【问题讨论】:
-
这是一个有趣的问题。上面的实现反映了我非常密切地使用 Richfaces 客户端验证的方式。用户在与组件交互时会获得有关验证的即时反馈,而我在提交表单时依赖服务器端验证。无论哪种方式,错误的呈现方式都是相同的。听起来您还希望在提交时进行客户端验证,大概是为了避免页面加载的成本?除此之外,我不确定为什么在用户提交表单时服务器端验证不可接受?
-
嗨,Dave,虽然客户端验证不是很安全,但我同时进行客户端和服务器端验证。是的,因为服务器使用率较低。顺便说一句,我认为我通过用 ajax:commandbutton 替换 h:commandbutton 来解决它,我忽略了它
-
这很有趣。我没有意识到 a4j:commandButton 添加了对表单级客户端验证的支持。如果它有效,您能否发布您自己的解决方案作为答案,以便我们都能受益?
标签: richfaces client-side-validation