2012-02-15 3 views
0

표시 할 오류 메시지가없는 경우 (예 : 사용자가 오류 페이지에 책갈피를 지정한 경우) 내 seam 응용 프로그램의 오류 페이지를 홈 페이지로 리디렉션하려고합니다.표시 할 오류가 없을 때 오류 페이지에서 리디렉션

는이 같은 오류 페이지로 직접 pages.xml의 규칙의 번호 유무 : 없음 메시지를 확인하려고 몇 가지 실패 EL 표현식을 시도 후

<!-- pages.xml --> 
    <exception class="org.jboss.seam.framework.EntityNotFoundException" 
    log-level="warn"> 
    <redirect view-id="/error.xhtml"> 
     <message severity="warn">#{messages['jsf.RecordNotFound']}</message> 
    </redirect> 
    </exception> 

을, 나는 백업 콩에 추가 확인을하십시오 :

<!-- pages.xml --> 
    <page view-id="/error.xhtml"> 
    <action execute="#{facesMessagesUtil.getGlobalMessagesCount()}" /> 
    <navigation> 
     <rule if-outcome="none"> 
     <redirect view-id="/home.xhtml"/> 
     </rule> 
    </navigation> 
    </page> 

.

//FacesMessagesUtil.java 

    import javax.faces.context.FacesContext; 
    import org.jboss.seam.faces.FacesMessages; 

    ... 

    public String getGlobalMessagesCount() 
    { 
     log.info("currently {0} global facesMessages (seam)", FacesMessages.instance().getCurrentGlobalMessages().size()); 
     log.info("found messages in faces context: {0}", FacesContext.getCurrentInstance().getMessages().hasNext()); 
     log.info("got maximum severity: {0}", FacesContext.getCurrentInstance().getMaximumSeverity()); 

     if (!FacesContext.getCurrentInstance().getMessages().hasNext()) 
     { 
     return "none"; 
     } 
     return "some"; 
    } 

위의 방법은 내가 수동으로 오류를 생성 할 때 호출하지만,이 집 로 리디렉션 및이 오류 메시지가 표시됩니다. 나를 여부를 확인 할 수 심 2의 클래스가 있는가

16:41:41,908 INFO [FacesMessagesUtil] currently 0 global facesMessages (seam) 
16:41:41,908 INFO [FacesMessagesUtil] found messages in faces context: false 
16:41:41,908 INFO [FacesMessagesUtil] got maximum severity: null 
  1. : 로그 메시지는 내가 사용하는 클래스가 표시되는 메시지의 가시성을 확보하지 않는 것보고 메시지가 있습니까?
  2. 추가 빈없이이 검사를 수행 할 수있는 EL 표현식이 있습니까?
+0

JSF 1.x 또는 2.x? – BalusC

+0

JBoss가 제공하는 JSF 1.1 (EWP 5.1.2) –

답변

0

내가 지금까지 조사한 바에 따르면, 문제는 seam이 한 JSF 컨텍스트에서 다른 JSF 컨텍스트로 FacesMessages를 전달하는 방법과 관련이 있습니다. 기본적으로 pages.xml 규칙이 적용되는 동안 메시지가 다른 seam 구성 요소로 제거 된 다음 페이지가 렌더링 될 때 반환됩니다. 나는 '오류없이'메시지를 보여줌으로써 지금이 문제를 해결 일한 (글로벌 메시지 렌더링 페이지 중 현재 참고) :

<h:outputText id="noErrorsMessage" 
    rendered="#{empty org.jboss.seam.international.statusMessages.currentGlobalMessages}"> 
    #{messages['jsf.NoErrors']} 
</h:outputText> 

내 콩 하나에서 일부 하드 코딩 된 리디렉션 규칙을.