2012-01-30 118 views
2

我是JSF中的新成员,不确定一些基本问题。bean和jsf验证注释inisde托管bean vs实体bean

我发现我有几种方法来定义我的输入字段的验证,但我不确定哪种方法是正确的。

我通过使用ExtVal使用bean验证和jsf验证。

我应该在我的实体bean中使用像@Size , @Length这样的验证注释,还是应该在托管bean中?每个选项有什么不同?

这个问题让我想到了一个更基本的问题,但我仍然不太明白 - 我有一个实体bean,其中包含字段及其setter和getters,还有一个托管bean和一个带有窗体的xhtml文件显示输入内的文件。
我应该在托管bean中使用它们的getter和setter来定义相同的字段吗?当从xhtml文件接近他们时,我通过MBname.FiledName来做到这一点?或者最好不要在托管bean中再次创建字段,并通过调用MBname.details.FiledName(当细节返回对象时)从xhtml接受它们? 又是什么是每个接近的差异?

感谢提前。

回答

4

我应该在我的实体bean中使用像@Size,@Length这样的验证注释,还是应该在托管bean中?每个选项有什么不同?

取决于具体的功能要求。关键是:验证应该如何重复使用?如果在实体级别配置,则对于除JSF以外的所有框架都可重用。如果在JSF级别进行配置,那么对于JSF以外的其他框架而言,它们不可重复使用,而这些框架碰巧使用相同的实体。


我应该定义他们的getter和setter的管理bean中的字段相同?当从xhtml文件接近它们时,我通过MBname.FiledName来完成它?或者最好不要在托管bean中再次创建字段,并通过调用MBname.details.FiledName(当细节返回对象时)从xhtml接受这些字段?又是什么是每个接近的差异?

您不应在控制器中复制/扩展数据模型。这没有意义。这不是DRY,因此只是维修头痛。

+0

谢谢,所以使用'MBname.details.FiledName'是查看对象字段的正确方法吗? – user590586 2012-01-30 13:26:40

+0

是的,除非由于某些技术原因,您真的*需要将模型属性复制到控制器中。但如果没有有效的技术原因,没有理由复制代码。 – BalusC 2012-01-30 13:57:49