Я создал новый проверочный:Названный объект не найден
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
bean, и все они работают отлично. Я ссылаюсь на них, используя <f:validator validatorId="{myValidatorBean}"/>
.
Я использую GlassFish 3.1.2.
попробовать ' ' –
Daniel
уже сделал. В этом случае проверка была полностью проигнорирована, а извиняемые учетные данные были доступны в прослушивателе действий, который к тому времени предполагает, что пользователь с указанным адресом электронной почты предоставил действительные учетные данные. –
Хотя меня все еще интересует возможность проверки составного компонента в целом (в конце концов, мы можем сгенерировать на нем одно преобразованное значение), я решил проблему валидации составных компонентов в [этом ответе] (http : //stackoverflow.com/a/10966594/584670). –