当前位置: 首页 > 知识库问答 >
问题:

@Email hibernate验证器注释在JSF2 Bean中不工作

袁青青
2023-03-14

我有一个JSF2应用程序,但我无法对JSF ManagedBean属性进行@email验证。

这是我的堆栈:

  • GlassFish 3.1.1
  • Mojarra 2.2.9/JSF 2.2
    null

我的代码:

<h:body>
<!-- <h:log id="log" /> -->
<h:messages globalOnly="true" style="color:red;margin:8px;" />

<h:form id="form">
    <f:validateBean>
        <h:outputLabel for="email" value="Enter your email: " />
        <h:inputText id="email" value="#{userEditBean.email}" />
        <h:message for="email" />

        <h:commandButton type="submit" value="Enviar"
            action="#{userEditBean.submit()}" />
    </f:validateBean>
</h:form>

托管bean:

import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.validation.constraints.Pattern;

@ManagedBean
@SessionScoped
public class UserEditBean {

private static final String CURRENT_PAGE = "";
private static final String USER_LIST_PAGE = "userList";

//@Pattern(regexp = "[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+", message =   "Email format is invalid.")
@Email(message = "Email format is invalid.")
private String email;


public String submit() {
    return CURRENT_PAGE;
}


public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}
}

备注:

    null
2015-03-23T14:11:24.772+0100|Información: Inicializando Mojarra 2.2.9 (-SNAPSHOT 20141218-0939 https://svn.java.net/svn/mojarra~svn/tags/2.2.9@14083) para el contexto '/fwk4jsf'
2015-03-23T14:11:25.368+0100|Información: HV000001: Hibernate Validator 4.3.2.Final

谢谢你。

共有1个答案

袁智明
2023-03-14

GlassFish作为一个Java EE容器,已经与其他JSF和Bean验证一起提供了。升级它们应该通过替换/glassfish/modules文件夹中的jar来完成。

如果由于某种原因这是不可能的,并且您确实需要通过webapp升级它们,那么您需要指示GlassFish首先在webapp中查找库,方法是将以下条目添加到glassfish-web.xml中:

<class-loader delegate="false" />

否则,GlassFish仍然会从自己的库加载它们,并且/或者会发生类加载问题,因为存在同名的重复类,从而导致具有多个类加载器的应用程序中的库之间的混乱和冲突,例如instanceof错误地返回具有对重复库访问权限的另一个类加载器加载的类的实例上的false

 类似资料:
  • 如果我使用以下配置,那么jackson转换器工作(mvc声明是最后) 如果我在dispatcher.xml中使用此配置,那么验证工作,但转换不工作。(mvc声明优先) 非常感谢您的任何帮助。Spring版本4.0.6

  • 我有一个使用javax注释的jax-rs项目(

  • 执行控制器方法时,我收到以下日志: ObjECT:[字段名称上的对象目录中的字段错误:拒绝值[safasf];代码[Pattern.catalog.name, Pattern.name, Pattern.java.lang.String, Pattern];参数[org.springframework.context.support.DefaultMessageSourceResolable:代码

  • 我有以下问题,有一个常规的spring模型(我们称之为“a”),带有一些与验证相关的注释。接下来是一个命令对象(定义一些字段的常规POJO类,其中一个是类型a的对象)。command对象实现了Validator接口,以使绑定和验证在控制器方法中工作。 问题是,如何在命令对象内部使用注释配置的验证(因为它实现了Validator接口,所以它有supports()和validate()方法)。 我试图

  • 我想知道是否有可能将一些自定义类型的新约束验证器注册到Bean验证规范定义的注释中。例如,让我们想象一下,我有一个类,它累加了几个int值 我想注册一个自定义约束验证器来支持这种类型的@正向注释(而不是创建自定义注释)。 这样以后我就可以使用这个:

  • 问题内容: 有没有一种方法可以使用此处定义的注释来定义Hibernate验证规则,说明至少一个字段不能为null? 这将是一个假设的示例(实际上不存在): 在所示的情况下,fieldA可以为null或fieldB可以为null,但不能同时为两者。 一种方法是创建自己的验证器,但是我想避免它已经存在。如果您已经验证过,请分享一个验证人…谢谢! 问题答案: 我终于写了整个验证器: 用法示例: