在应用程序中扩展JSF验证

时间:2013-01-02 03:05:16

标签: validation jsf

我们正在开发基于JSF(v2.0)框架的Web应用程序。我们需要在我们的应用程序中进行自定义验证。我们决定通过实施JSF validation framework类扩展Validator

那么让我们说我们有多个需要验证的输入字段。这些输入字段为First Name, Last NameEmail Address.我们需要用户在这些字段中输入信息。电子邮件地址字段将有两个验证 - RequiredisValidEmailAddress

我们应该能够在RequiredFirst Name, Last Name字段中使用自定义Email Address验证。 但每次我希望为每个字段显示不同的错误消息。例如,在First Name的情况下,我想显示名字is required. In case of姓氏I want to display姓氏是必需的。

如何为多个字段重用相同的Required验证实现,但错误消息不同?是否有可能在JSF中这样做?你能告诉我吗?

1 个答案:

答案 0 :(得分:0)

首先,您不需要为JSF中的必需输入编写自己的验证逻辑。这是框架本身提供的基本设施之一。

JSF的验证框架从与验证相关的消息中清晰地抽象出来,因此两者不必相互依赖。你的选择:

  1. 每个输入组件都有一个validatorMessage属性,允许您指定在验证错误时将显示给用户的文本/字符串。对于您的特定用例,JSF更进一步为输入组件指定requiredrequiredMessage属性;分别强制执行所需的输入并专门为所需的输入验证显示消息。在您的用例中,这意味着您不需要为所需的输入编写自定义验证逻辑。

  2. 根据更好的设计原则,您可以在资源包中配置所有所需的验证/转换错误消息(例如here),并在jsf视图中引用资源包中的条目。

  3. 实现验证器接口要求您使用以下签名实现validate方法

       public void validate(FacesContext ctxt, UIComponent comp, Object value) throws ValidatorException
    

    comp是指正在验证的组件,您可以从中获取Class,clientId等。value将提供组件提交的值