托管bean问题(JSF 2.0)中的用户输入验证

当我尝试从托管的bean中验证来自JSF的用户输入时,我遇到了一些问题。 我在控制台中收回验证消息,但我没有在页面中看到它。 我不明白问题在哪里。

这是控制台输出:

信息:内部验证方法! 信息:没有匹配! INFO:实例化org.hibernate.validator.engine.resolver.JPATraversableResolver的一个实例。 信息:警告:FacesMessage(s)已被排队,但可能没有被显示。 sourceId = bRegForm:name [severity =(INFO 0),summary =(您的名字不能包含特殊字符),detail =(您的名字不能包含特殊字符)]

这就是我制作JSF输入组件的方式:

<h:inputText id="name" value="#{registrationController.name}" validator="#{registrationController.validateName}" required="true">
        <h:message for="name"/>
    </h:inputText>

这就是我如何创建验证方法:

@ManagedBean
@RequestScoped
public class RegistrationController {
...
public void validateName(FacesContext context, UIComponent validate,
        Object value) {
    String inputFromField = (String) value;
    String simpleTextPatternText = "^[a-zA-Z0-9]+$";
    Pattern textPattern = null;
    Matcher nameMatcher = null;
    textPattern = Pattern.compile(simpleTextPatternText);
    nameMatcher = textPattern.matcher(inputFromField);
    System.out.println("Inside validation method!!");
    if (!nameMatcher.matches()) {
        System.out.println("NO MATCH!!!");
        FacesMessage msg = new FacesMessage(
                Your name cannot contain special characters);
        throw new ValidatorException(msg);
    }
}

正如你看到我设法进入验证方法,当我尝试输入,确实包含特殊字符,如:G#^ r $>',...和我看到的消息,关于它在控制台中的建议,但我没有看到显示在页面上的输入字段旁边的消息。 顺便说一句:我还注意到,当我给空输入我没有看到任何验证消息,我确实要求=“真”。 我检查了错误日志和控制台,但我没有发现任何可以给我提示的异常(只是我上面粘贴的警告消息)。 我是一个使用JSF 2.0的初学者,这是我遇到这个问题的第三天,我不知道要解决它。 我需要配置任何XML吗? 我需要实现任何接口吗? 重写任何方法?...如果有人可以看看它并帮我一把,我会很高兴。 提前非常感谢您的阅读时间。


<h:message>不应嵌套在<h:inputText> 。 把它们放在一起。

链接地址: http://www.djcxy.com/p/71651.html

上一篇: User input validation in managed bean problem(JSF 2.0 )

下一篇: JSF(Primefaces) ajax update of several elements by ID's