JSF验证是客户端还是服务器端?

Sve*_*ven 13 validation jsf

我实现了我的验证逻辑如下:

        <h:inputText id="title" value="#{...}" 
            required="true" requiredMessage="...some..text..." 
            validatorMessage="...some..other..text..." >
            <f:validateLength minimum="10" maximum="50"/>
        </h:inputText>
Run Code Online (Sandbox Code Playgroud)

我阅读了很多关于客户端和服务器端验证以及它们的优缺点.但我不知道上面的代码是做什么的.

有人可以解释一下:-)

干杯

Bal*_*usC 30

在客户端验证中,它是客户端(webbrowser),它借助客户端语言(例如JavaScript)验证输入.在服务器端验证中,它是服务器(webserver),它借助服务器端语言(例如Java)验证输入.

你永远不应该这样做只是客户端验证,因为结果是可控的(因此也容易被破解/欺骗性)由终端用户.通常,您希望使用客户端验证,因为它可以提供更快的反馈.终端用户并不需要等待表单提交被完成,并不需要面对"的内容闪光"(页空白出来,然后用新的内容重新显示).您希望使用服务器端验证来确保提交数据的完整性.最终用户无法控制服务器端验证的结果.

在JSF的情况下,验证始终是服务器端.从JSF 2.0开始,可以使用内置的ajaxical功能提交表单(从而也验证表单).这结合了两个世界中最好的:具有没有内容闪存的即时反馈和服务器端验证的健壮性/完整性.

  • @Sven:在`UICommand`组件中放置`<f:ajax execute ="@ form"render ="@ form"/>`.或者,如果要验证每个输入元素的模糊,请在每个UIInput`组件中放置`<f:ajax event ="blur"render ="messageid"/>`. (2认同)