사용자가 여러 정보를 입력하는 JSF 페이지가 있습니다. 사용자가 데이터를 제출하면 먼저 유효성을 검사하고 제출이 성공하면 사용자는 FacesMessage도 받아야합니다.XSP JSF FacesContext addMessage가 항상 작동하지 않는 경우
는 내가 모든 단일 페이지에 사용하고 메뉴 모음에 대한 사용자 정의 제어 할 수 있습니다 :
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:panel>
<xp:this.facets>
<!-- Some Logos and stuff -->
<xp:panel xp:key="contentFacet">
<xp:callback facetName="contentContainer"></xp:callback>
</xp:panel>
</xp:this.facets>
</xp:panel>
</xp:view>
입니다 다음 다음과 같은 방법으로 사용되는 메뉴 : cc_content_form이 컨트롤을 사용
<xc:cc_layout_main><xp:this.facets>
<xp:panel xp:key="contentContainer">
<xc:cc_content_form></xc:cc_content_form></xp:panel>
</xp:this.facets></xc:cc_layout_main>
를 :
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:messages id="messages1" styleClass="test" layout="table"
errorClass="alert-warning" fatalClass="alert-danger"
infoClass="alert-info" warnClass="alert-warning" showDetail="true"
showSummary="true" disableTheme="false" globalOnly="false">
</xp:messages>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
// Validierungs Nachrichten entfernen
var delayMs = 750;
$('body')
.on('click', function(event){
x$('#{id:messages1}').delay(delayMs).fadeOut(500);
})
.on('keyup', function(event){
x$('#{id:messages1}').delay(delayMs).fadeOut(500);
})
]]></xp:this.value>
</xp:scriptBlock>
</xp:view>
제출 기능에서 나는 이것을 검증 기능에 사용하고 있습니다 :
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "error", "some error"));
이 호출은 모든 페이지에서 사용할 수 있도록 싱글 톤 패턴의 도우미 클래스 메서드로 래핑됩니다. 유효성 검사 메시지의 경우이 동작은 제대로 작동하지만 actionResult "xsp-success"를 반환하기 전에 valdiation 메서드에서 더 이상 작동하지 않습니다. 메시지가 나타나지 않습니다. 예외가 없습니다.
아무도 도와 드릴 수 있습니까?