I는 JSF의 다음 인증 형태 글래스 피시 (3)에서 실행 한 JSF 않고 본 메시지 수행H : 속성과 메시지 요소 2
public String logIn() {
user = userDAO.authenticate(user, password);
if (user != null) {
FacesMessage message = new FacesMessage("Welcome!");
message.setSeverity(FacesMessage.SEVERITY_INFO);
FacesContext.getCurrentInstance().addMessage(null, message);
return "ok";
} else {
FacesMessage message = new FacesMessage("Authentication failed");
message.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null, message);
if ("".equals(user)) {
message = new FacesMessage("You need to give a user");
message.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(
"login-user", message);
}
return "fail";
}
}
:
가
<h:messages globalOnly="true" errorClass="erro" />
<h:form id="form-login">
<h:outputText value="User" />
<h:message for="login-user" />
<h:inputText id="login-user"
value="#{authenticationBean.user}" showMessages="true" />
<h:outputText value="Password" />
<h:inputSecret id="login-password"
value="#{authenticationBean.password}" />
<h:commandButton id="Log in"
action="#{authenticationBean.logIn}" value="Autenticar-se" />
</h:form>
authentication.logIn
방법은 아래의 하나이다
사용자 로그인이 제공되지 않는 경우 특정 메시지를 표시하려고 시도합니다. 줄 번호는 <h:message for="login-user" />
입니다. 그래도 작동하지 않습니다. 빈 사용자 필드로 제출 버튼을 클릭하면 <h:messages globalOnly="true" errorClass="erro" />
요소는 "Authentication failed"
을 표시하지만 <h:message for="login-user" />
구성 요소는 예상대로 텍스트를 "You need to give a user"
으로 표시하지 않습니다. 대신 메시지를 전혀 표시하지 않습니다.
[lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=login-user[severity=(ERROR 2), summary=(You need to give a user), detail=(You need to give a user)]
(사실, 난 구글에서 일부 번역보고, 내가 가진 진짜 메시지가 포르투갈어이기 때문에 :
INFO: WARN: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=login-usuario[severity=(ERROR 2), summary=(You need to give a user), detail=(You need to give a user)]
)
또한, 다음과 같은 경고가 로그에 나타납니다 내가 도대체 뭘 잘못하고있는 겁니까?
미리 감사드립니다.
감사합니다. BalusC! 사실, 저는 글로벌 메시지를 많이 사용합니다. 매우 실용적입니다. 그러나 나는 여전히 의심의 여지가 : 어떻게 구성 요소에 대해이 클라이언트 ID를 프로그래밍 방식으로 얻을 수 있습니까? 나는 그것을 응용 프로그램에서 하드 코딩하는 것은 매우 실용적이지 않다고 생각합니다. – brandizzi
보통 당신은 validator를 사용할 것입니다. 실패 할 경우'ValidatorException'을 던져 JSF가 클라이언트 ID를 처리합니다. – BalusC