我们正在开发基于JSF(v2.0)框架的Web应用程序。我们需要在我们的应用程序中进行自定义验证。我们决定通过实施JSF validation framework
类扩展Validator
。
那么让我们说我们有多个需要验证的输入字段。这些输入字段为First Name, Last Name
,Email Address.
我们需要用户在这些字段中输入信息。电子邮件地址字段将有两个验证 - Required
和isValidEmailAddress
。
我们应该能够在Required
和First Name, Last Name
字段中使用自定义Email Address
验证。 但每次我希望为每个字段显示不同的错误消息。例如,在First Name
的情况下,我想显示名字is required. In case of
姓氏I want to display
姓氏是必需的。
如何为多个字段重用相同的Required
验证实现,但错误消息不同?是否有可能在JSF中这样做?你能告诉我吗?
答案 0 :(得分:0)
首先,您不需要为JSF中的必需输入编写自己的验证逻辑。这是框架本身提供的基本设施之一。
JSF的验证框架从与验证相关的消息中清晰地抽象出来,因此两者不必相互依赖。你的选择:
每个输入组件都有一个validatorMessage
属性,允许您指定在验证错误时将显示给用户的文本/字符串。对于您的特定用例,JSF更进一步为输入组件指定required
和requiredMessage
属性;分别强制执行所需的输入并专门为所需的输入验证显示消息。在您的用例中,这意味着您不需要为所需的输入编写自定义验证逻辑。
根据更好的设计原则,您可以在资源包中配置所有所需的验证/转换错误消息(例如here),并在jsf视图中引用资源包中的条目。
实现验证器接口要求您使用以下签名实现validate
方法
public void validate(FacesContext ctxt, UIComponent comp, Object value) throws ValidatorException
comp
是指正在验证的组件,您可以从中获取Class
,clientId等。value
将提供组件提交的值