2012-05-28 3 views
0

메뉴가있는 템플릿 페이지의 forword에 대한 인증이있는 페이지가 있습니다.첫 번째 클릭시 작업이 호출되지 않습니다.

<navigation-rule> 
    <from-view-id>pages/login.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>userOK</from-outcome> 
     <to-view-id>pages/template.xhtml</to-view-id> 
    </navigation-case> 
    <navigation-case> 
     <from-outcome>userNOK</from-outcome> 
     <to-view-id>pages/login.xhtml</to-view-id> 
    </navigation-case>  
    </navigation-rule> 

내 페이지 template.xhtml

<h:form> 
<p:menu type="plain" style="width:200;box-shadow: 6px 6px 6px black;top:-18;left:-40" > 
    <p:submenu label="Dossier" id ="Dossier" > 
     <p:menuitem update=":contentform,:messages" value="Nouveau Dossier" action="#{choix.setPage('ajoutDossier')}" 
    .... 
    .... 
</h:form> 

<h:form id="contentform" > 
    <h:panelGroup rendered="#{choix.page == 'ajoutDossier'}"> 
     <ui:include src="Dossier/ajoutDossier.xhtml" /> 
    </h:panelGroup> 
    .... 
    .... 
</h:form> 

문제는 그 행동이 내가 2 시간을 클릭해야 할 첫 번째 클릭에 호출되지이며, 나는 많은 시간과 조치를 클릭하기 전에 아니다 호출, 그리고 때로는 juste p : 하위 메뉴가 있습니다. 마지막 위치에있는 작업

앞으로도 페이지 template.xhtml이 작동하지 않았을 때도!

+0

jsf의 템플릿 개념을 잘못 이해했다고 생각합니다. 템플릿은 템플릿 일 뿐이며 템플릿으로 이동할 수 없습니다. 템플릿에서 템플릿 클라이언트가 . 그런 다음 템플릿 클라이언트 (템플릿을 사용하는 xhtml 페이지를 만들고 삽입 할 대상을 선언 함)를 만듭니다. 템플릿 클라이언트로 이동합니다. – Damian

+0

템플릿이란 무엇을 의미합니까? 템플릿은 west, north 또는 center 레이아웃을 가진 페이지이고''을 사용하고 렌더링 된 속성을 사용하여 일부 레이아웃 (가운데)에서 페이지를 표시합니다. ' 는 내가 수': 을 당신은 최선의 해결책을 제공합니까? – Youssef

+0

내 대답을 참조하십시오 – Damian

답변

0

나는 문제가있는 페이지의 이후에 <redirect />을 추가해야한다는 해결책을 발견했습니다. 왜냐하면 JSF가 성공 페이지로 이동하기 위해 내부 전달을 사용하므로이 URL이 변경되지는 않지만 나는 정말로 undestand하지 않는다 왜?

<navigation-rule> 
    <from-view-id>pages/login.xhtml</from-view-id> 
    <navigation-case> 
     <from-outcome>userOK</from-outcome> 
     <to-view-id>pages/template.xhtml</to-view-id> 
     <redirect /> 
    </navigation-case> 
    <navigation-case> 
     <from-outcome>userNOK</from-outcome> 
     <to-view-id>pages/login.xhtml</to-view-id> 
    </navigation-case>  
    </navigation-rule> 

는 리디렉션 페이지의 느슨한 CSS에 당신이 JSF 템플릿을 활용하지 않는이

<link rel="stylesheet" href="#{request.contextPath}/css/style.css" /> 
+0

CSS의 경우 를 사용해야합니다. – BalusC

1

을 추가해야합니다 : 여기

작동 코드입니다. 템플릿과 여러 템플릿 클라이언트를 사용하는 대신 하나의 페이지에 모든 것이 있습니다. 조건부로 물건을 렌더링합니다. 이 tutorial 또는 jsf 임시 보관함에 대한 다른 자습서를보십시오.
일반적으로 모든 페이지에 공통된 모든 레이아웃과 내용을 가진 템플릿이 있습니다. 필요한만큼 여러 번 다른 이름으로 태그 <ui:insert name="title" >Default content</ui:insert>을 사용합니다. 그럼 당신은 템플릿에 포함 할 내용을 설정하기위한 태그 <ui:define name="nav2">를 사용하여 다음

<ui:composition template="./../resources/templates/templateFile.xhtml"> 

그리고를 사용하여 템플릿을 정의하는 템플릿 클라이언트를 만들 수 있습니다.

그 외에도 코드 내비게이션 문제 : 탐색을 수행 할 때 페이지를 완전히로드 한 후 (아약스 없음) 컨텐츠를 업데이트하지 않습니다. 먼저 업데이트 속성을 제거해야합니다. 또한 p : menuitem의 "ajax"속성을 false로 설정해야합니다. 기본적으로 그것은 사실입니다. 그렇지 않으면 네비게이션이 수행되지 않습니다.
작업을 수행 한 경우 탐색 규칙의 리디렉션 속성이 필요하지 않습니다. 그것은 앞으로 완벽하게 잘 작동 할 수 있습니다. 앞으로의 유일한 문제점은 브라우저가 탐색을 통지받지 않기 때문에 브라우저 URL이 변경되지 않는다는 것입니다.

관련 문제