내가 새로운 검증 만들어 찾을 수 없습니다명명 된 객체는
package com.example.jsf.validator;
import com.example.components.LoginFormValue;
import com.example.ejb.SecurityEjb;
import java.io.Serializable;
import javax.ejb.EJB;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import javax.inject.Named;
/**
* Validator for {@code login-form} component.
*
* @author steve
*/
@Named
@ApplicationScoped
public class LoginValidator implements Validator, Serializable
{
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException
{
if (value == null)
{
return;
}
LoginFormValue loginFormValue = (LoginFormValue) value;
if (securityEjb.checkCredentials(loginFormValue.getEmailAddress(), loginFormValue.getPassword())) {
return;
}
throw new ValidatorException(new FacesMessage("Incorrect email address/password"));
}
@EJB
private SecurityEjb securityEjb;
}
을하지만 그것을 사용하려고하면
내가 페이지를로드 할 때<my:login-form emailAddress="#{loginBean.emailAddress}"
rememberMe="#{loginBean.rememberMe}"
actionListener="#{loginBean.submit()}"
recoverPasswordOutcome="recover-password"
registerOutcome="signup">
<f:validator validatorId="#{loginValidator}"/>
</my:login-form>
나는이 예외가 표시 얻을 :
javax.faces.FacesException: Expression Error: Named Object: [email protected] not found.
을
코드 위반 줄 :
com.sun.faces.application.ApplicationImpl.createValidator(ApplicationImpl.java:1593)
JSF가 실제로 유효성 검증기 bean 클래스를 해석하지만 아직 인스턴스화 할 수없는 이유는 무엇입니까? 내 애플 리케이션의 다른 모든 유효성 검사기는 콩 Named
ApplicationScoped
이며 그들은 모두 잘 작동합니다. 나는 그들 모두를 <f:validator validatorId="{myValidatorBean}"/>
을 사용하여 참조한다.
저는 GlassFish 3.1.2를 사용하고 있습니다.
시도 ' ' –
Daniel
이미 수행했습니다. 이 경우 유효성 검사는 완전히 무시되고 dodgy 자격 증명은 작업 수신기에서 사용할 수 있으며 지정된 전자 메일 주소를 가진 사용자가 유효한 자격 증명을 제공했다고 가정합니다. –
나는 여전히 복합 컴포넌트를 전체적으로 검증 할 수있는 가능성에 관심이 있지만 (결국, 변환 된 단일 값을 생성 할 수 있습니다.) [이 답변]에서 복합 컴포넌트 유효성 검사의 문제를 해결했습니다 (http : //stackoverflow.com/a/10966594/584670). –