JSF在哪里验证输入值?后端还是前端?

时间:2012-04-24 12:31:10

标签: java jsf jsf-2

JSF可以验证输入值。任何人都可以说JSF在哪里验证..?

3 个答案:

答案 0 :(得分:3)

服务器总是和客户端有时。

客户端可以使用HTML / Javascript验证某些类型的输入作为可用性增强。但是,当客户端将信息发回服务器时,将始终在服务器上验证该输入和所有其他输入。

答案 1 :(得分:3)

我认为这两个答案都有点不清楚,因此我想总结一下:

1。)JSF原样,始终在服务器端执行验证! JSF中的验证是JSF组件生命周期的一部分。提交一些数据时会触发生命周期。我不想详细介绍,但生命周期会通过phsaes(恢复组件,触发转换,验证转换后的值,执行actionlisteners和actions,渲染响应)

2。)感觉像客户端站点验证的验证是在JSF中使用ajax支持时。这个方法的作用是它只请求执行一些html字段。 JSF执行与普通请求相同的生命周期。不同之处在于它仅转换和验证您指定的组件,并仅为您指定的组件呈现输出。 因此,JSF中支持ajax的验证也在服务器端执行!

3。)我不同意第三方库提供客户端验证。

Primefaces 集成了jQuery UI,但它仍然使用ajax aproach来验证数据。您可以编写自己的jQuery JS来验证某些字段,但我不会这样做。编写和难以管理重复的验证逻辑是痛苦的。

Richfaces 提供部分客户端验证。它为一些JSR 303和JSF验证器提供了JS实现。因此,提供了真正的客户端JS验证,但仅适用于存在JS实现的验证器。请参阅:http://planet.jboss.org/post/richfaces_4_client_side_validation

Ice faces 作为Primefaces克隆不提供客户端验证。

答案 2 :(得分:1)

作为@Mike Q的后续跟进,JSF可以在客户端或服务器端进行验证。但是,内置于JSF生命周期(在服务器端进行)是一个验证阶段。组件可能没有服务器端验证,但不建议这样做。所有标准组件都提供服务器端验证。

JSF Components还可以提供客户端验证。许多第三方JSF组件库(PrimeFacesRichFaces,...)提供了此功能。