JSF 验证是客户端还是服务器端?
Posted
技术标签:
【中文标题】JSF 验证是客户端还是服务器端?【英文标题】:Is JSF validation client-side or server-side? 【发布时间】:2011-04-30 03:06:39 【问题描述】:我实现了我的验证逻辑如下:
<h:inputText id="title" value="#..."
required="true" requiredMessage="...some..text..."
validatorMessage="...some..other..text..." >
<f:validateLength minimum="10" maximum="50"/>
</h:inputText>
我阅读了很多关于客户端和服务器端验证以及它们的优缺点的信息。但我不知道上面的代码是做什么的。
有人可以解释一下吗:-)
干杯
【问题讨论】:
【参考方案1】:在客户端验证中,客户端(网络浏览器)在客户端语言的帮助下验证输入,例如javascript。在服务器端验证中,是服务器(webserver)在服务器端语言的帮助下验证输入,例如Java。
您不应该仅进行客户端验证,因为最终用户可以控制结果(因此也可以破解/欺骗)。通常,您希望使用客户端验证,因为它可以更快地提供反馈。最终用户不需要等待表单提交完成,也不需要面对“内容闪现”(页面空白,然后重新显示新内容)。您想使用服务器端验证来确保提交数据的完整性。最终用户无法控制服务器端验证的结果。
在 JSF 的情况下,通过内置 required="true"
属性和标准/自定义验证器的验证总是服务器端。从 JSF 2.0 开始,可以使用内置的 ajaxical 功能提交表单(并因此也验证表单)。这结合了两个方面的优点:无需内容闪现的即时反馈和服务器端验证的稳健性/完整性。
另见:
How to perform validation in JSF, how to create a custom validator in JSF【讨论】:
感谢您的这些明智之言。您能否给我一个链接(或示例)如何在我的代码中包含 ajax :-) 这会很棒 :-) ...或者它只是有时令人困惑的 标记? 是的,f:ajax
是在您的代码中引入 javascript/AJAX 的一种方式。有关如何开始使用它的提示,请参阅相关问题:***.com/questions/3138488/…
@Sven:将<f:ajax execute="@form" render="@form" />
放入UICommand
组件中。或者,如果您想验证每个输入元素的模糊,请将 <f:ajax event="blur" render="messageid" />
放入每个 UIInput
组件中。以上是关于JSF 验证是客户端还是服务器端?的主要内容,如果未能解决你的问题,请参考以下文章
如何将服务器端和客户端的 tabview 组件与 jsf 匹配?
web服务端给手机客户端发送一条短信验证码,因为要跟客户端提交的比较,服务端怎么先保存这个验证码呢