Validation 在应用程序中扩展JSF验证
我们正在开发一个基于JSF(v2.0)框架的web应用程序。我们需要在应用程序中进行自定义验证。我们决定通过实现Validation 在应用程序中扩展JSF验证,validation,jsf,Validation,Jsf,我们正在开发一个基于JSF(v2.0)框架的web应用程序。我们需要在应用程序中进行自定义验证。我们决定通过实现Validator类来扩展JSF验证框架 我们假设有多个输入字段需要验证。这些输入字段是名字、姓氏、电子邮件地址。我们需要用户在这些字段中输入信息。电子邮件地址字段将有两个验证-必需和isValidEmailAddress 我们应该能够在姓名和电子邮件地址字段中使用自定义必需的验证但每次我都希望为每个字段显示不同的错误消息。例如,如果是名字,我想显示名字是必需的。在姓氏的情况下,我想显
Validator
类来扩展JSF验证框架
我们假设有多个输入字段需要验证。这些输入字段是名字、姓氏
、电子邮件地址。
我们需要用户在这些字段中输入信息。电子邮件地址字段将有两个验证-必需
和isValidEmailAddress
我们应该能够在姓名
和电子邮件地址
字段中使用自定义必需的
验证但每次我都希望为每个字段显示不同的错误消息。例如,如果是名字
,我想显示名字是必需的。在
姓氏
的情况下,我想显示姓氏是必需的`
如何对多个字段重复使用相同的
Required
验证实现,但错误消息不同?在JSF中有可能做到这一点吗?您能告诉我吗?首先,您不需要为JSF中所需的输入编写自己的验证逻辑。这是框架本身提供的基本设施之一
JSF的验证框架从与验证相关的消息中清晰地抽象出来,因此两者不必相互依赖。您的选择:
validatorMessage
属性,允许您指定验证错误时将显示给用户的文本/字符串。对于您的特定用例,JSF进一步为输入组件指定required
和requiredMessage
属性;分别执行所需输入并显示专门用于所需输入验证的消息。在您的用例中,这意味着您不需要为所需的输入编写自定义验证逻辑validate
方法
public void validate(FacesContext ctxt, UIComponent comp, Object value) throws ValidatorException
comp
指正在验证的组件,您可以从中获取其类、客户端ID等。value
将提供组件提交的值我们无法使用资源包,因为我们决定将所有消息保留在数据库中,以便可以轻松更改(无需部署)。甚至“requiredMessage”也可以通过编程而不是硬编码来派生?@Apps警告:错误/警告消息等元素最好从静态源中使用。您不希望每次有人在webform中的条目出错时都访问数据库。话虽如此,您可以将所有消息加载到ApplicationScoped bean中,并在属性中引用它的成员变量(对应于字符串类型的消息)。您只需在应用程序范围内的beanThanks Kolossus中实现加载消息(来自DB、WS、文件等)的逻辑。即使它存储在数据库中,我们也会在第一次从数据库检索信息后将其存储在应用程序范围中。在所有后续请求中,将从应用范围内提供服务。我们是否可以使用验证程序界面并为每个组件显示不同的错误消息?@Apps是的,您可以。正如我在回答中所说的,每个组件都有自己的validatorMessage
属性,在该属性中,您可以定义仅为该组件的验证错误显示的文本。但是,如何使自定义验证实现具有针对每个组件的不同消息的通用性?是否可以从客户端传递一些自定义属性,告诉自定义验证实现这是需要使用的错误消息密钥?