내 JSF / 파슬레츠 here& # 39 의 일부가 애플리케이션 (앱) 을 간단한 버전의 내 양식:
<h:form id="myform">
<h:inputSecret value="#{createNewPassword.newPassword1}" id="newPassword1" />
<h:message class="error" for="newPassword1" />
<h:inputSecret value="#{createNewPassword.newPassword2}" id="newPassword2" />
<h:message class="error" for="newPassword2" />
<h:commandButton value="Continue" action="#{createNewPassword.continueButton}" />
</h:form>
나는 메시지를 사용하여 태그를 # 39, h t can& 때문에 다른 여러 하면 해당 페이지가 표시하십시오 :을 데릭쉐퍼드와 오류 메시지. 이 때, 모든 메시지를 복제물을 시됩니다 페이지를 찾았다.
이 같은 짐작할 수 있는 것이 있지 않지만, 운빨이야 찾았다.
public Navigation continueButton() {
...
expensiveMethod();
if(...) {
FacesContext.getCurrentInstance().addMessage("newPassword", new FacesMessage("Error: Your password is NOT strong enough."));
}
}
내가 뭘 놓친거야? 어떤 도움이 될 것이라고 평가했다.
[파시오스콘티스트리아다 세이지 (문자열, 파시오스메사게)] [1] , # 39 의 클리렌티드 component& 필요 없는 it& # 39 의 id . 왜 이 생각을 하게 되고, 만약 you& # 39 는 데이터 테이블, 금형, 제어점 자식으로 아웃해야 각 행에 대해 다른 값을 가질 수 있는 다른 메시지 = 이 같은 제어 가능할 것 "이라고 인쇄했습니다 각 행에 대해. , 는 항상 동일한 id 를 고유하므로 클리렌티드 이 한 행에.
그래서 " myform:mybutton"; 올바른 값이 있지만, 이는 무분별한 하드 코딩 있다. 조회 및 비즈니스 로직과 외곽진입 될 것이라고 보기 커플링 (coupling) 사이에 만들 것 보다 더 제한적인 같은 환경에서 작동하는 포틀릿.
<f:view>
<h:form>
<h:commandButton id="mybutton" value="click"
binding="#{showMessageAction.mybutton}"
action="#{showMessageAction.validatePassword}" />
<h:message for="mybutton" />
</h:form>
</f:view>
콩 관리됨 논리를 폈다.
/** Must be request scope for binding */
public class ShowMessageAction {
private UIComponent mybutton;
private boolean isOK = false;
public String validatePassword() {
if (isOK) {
return "ok";
}
else {
// invalid
FacesMessage message = new FacesMessage("Invalid password length");
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(mybutton.getClientId(context), message);
}
return null;
}
public void setMybutton(UIComponent mybutton) {
this.mybutton = mybutton;
}
public UIComponent getMybutton() {
return mybutton;
}
}
[1]: http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/context/FacesContext.html # 아다 세이지 (자바드란g. 스트레이 20javax.faces.application.facesmessage, %) [2]: http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/context/FacesContext.html # 레네르스폰지 ()
누구나 할 수 있었는데, 경우에 따라 응답 기업의 모든 눈길을 끌었다 분명 이 아웃해야 결합됨!
이 '는 파시오릿:
<h:form id="myform">
<h:inputSecret value="#{createNewPassword.newPassword1}" id="newPassword1" />
<h:message class="error" for="newPassword1" id="newPassword1Error" />
<h:inputSecret value="#{createNewPassword.newPassword2}" id="newPassword2" />
<h:message class="error" for="newPassword2" id="newPassword2Error" />
<h:commandButton value="Continue" action="#{createNewPassword.continueButton}" />
</h:form>
이는 콘티누에버튼 () 의 방법:
FacesContext.getCurrentInstance().addMessage("myForm:newPassword1", new FacesMessage(PASSWORDS_DONT_MATCH, PASSWORDS_DONT_MATCH));
및 작동하잖아! 참 고맙네요!
즉,:
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage( null, new FacesMessage( "The message to display in client" ));
, 는 첫 번째 매개변수에서 유효함, 이유는열 역시 null 로 지정된 양식을 전체가 적용 중이다.
추가 정보: coreservlets.com //Outdated
>. 이 같은 짐작할 수 있는 것이 있지 않지만, 운빨이야 찾았다.
오른쪽 다는일은 보입니다. 당신은 명시적으로 설정하는 메시지 심각도와 했다. 또한 I believe the ID 동일합니까 필요가 없는 구성 요소 (즉, you& # 39; d 사용해야 하는 newPassword1 또는 newPassword2 경우 이러한 현재 침입탐지시스템 (ids), 예를 들어, 때 아닌 뉴파스워드 있었다).
FacesContext.getCurrentInstance().addMessage("newPassword1",
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error Message"));
그러면 '메시지 = " < newPassword1";; h: '에 오류 메시지가 표시하십시오 JSF 호출이네요 />.
Java:
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Authentication failed", null);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, message);
XHTML.
<h:messages></h:messages>