小编Ios*_* M.的帖子

为什么<f:validateBean />不起作用?

我使用JSF 2.0,hibernate-validator4.2.jar validation-api.jar tomcat和Eclipse.

我把@Size(min=3, message="xxx")注释放在@ManagedBean <f:validateBean />之间<h:inputText value="#{user.name}"></h:inputText>

当我尝试运行该项目时,我收到此错误...

exception

javax.servlet.ServletException: Expression Error: Named Object: javax.faces.Bean not found.
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)

root cause

javax.faces.FacesException: Expression Error: Named Object: javax.faces.Bean not found.
    com.sun.faces.application.ApplicationImpl.createValidator(ApplicationImpl.java:1593)
    com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.createValidator(ValidatorTagHandlerDelegateImpl.java:244)
    com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.applyAttachedObject(ValidatorTagHandlerDelegateImpl.java:132)
    com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.applyNested(ValidatorTagHandlerDelegateImpl.java:211)
    com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.apply(ValidatorTagHandlerDelegateImpl.java:87)
    javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
    javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
Run Code Online (Sandbox Code Playgroud)

为什么?(这只在我放标签时出现)

User.java

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.validation.constraints.Size;

@ManagedBean(name="user")
@SessionScoped
public class User{
    @Size(min=3, message="At least 3 characters!")
    private String name;


    public String getName() {
        return nume;
    }
        public void setName(String name){
                this.name=name;
    }

}
Run Code Online (Sandbox Code Playgroud)

adduser.xhtml

<!DOCTYPE …
Run Code Online (Sandbox Code Playgroud)

jsf bean-validation jsf-2

5
推荐指数
1
解决办法
7980
查看次数

标签 统计

bean-validation ×1

jsf ×1

jsf-2 ×1