0

メニューがあるテンプレートページに進む認証付きのページがあります。

  <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>

the problem is that action isn't invoked at the first click i have to click 2 time , and before i click many time and action isn't invoked, and sometimes juste p:submenu which are in the last position work

also when it was no forward just the page template.xhtml it's work !

4

2 に答える 2

1

JSFテンプレートを利用していません。テンプレートと複数のテンプレートクライアントを使用する代わりに、すべてを1ページにまとめることができます。条件付きでレンダリングします。このチュートリアルまたはjsftempaltesに関する他のチュートリアルをご覧ください。
通常、すべてのページに共通するすべてのレイアウトとコンテンツを含むテンプレートがあります。タグ<ui:insert name="title" >Default content</ui:insert>を必要な回数だけ使用します(異なる名前で)。次に、テンプレートクライアントを作成し、を使用してテンプレートを定義します。

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

次に、タグ<ui:define name="nav2">を使用して、テンプレートに含めるコンテンツを設定します。

それに加えて、コード内のナビゲーションの問題について:ナビゲーションを実行すると、コンテンツは更新されません。これは、ナビゲーション後にページが完全に読み込まれるためです(ajaxはありません)。したがって、まず最初に、更新属性を削除する必要があります。また、p:menuitemの「ajax」属性をfalseに設定する必要があります。デフォルトではそれが本当だからです。そうしないと、ナビゲーションは行われません。
問題がなければ、ナビゲーションルールのリダイレクト属性は必要ありません。フォワードで完全に正常に動作します。転送に関する唯一の問題は、ブラウザにナビゲーションが通知されないため、ブラウザのURLが変更されないことです。

于 2012-05-29T12:11:15.117 に答える
0

<redirect />問題のあるページの後に追加する必要がある解決策を見つけました<to-view-id>.JSFはREDIRECTではなく内部FORWARDを使用して成功ページに移動することを読んだため、URLが変更されない理由ですが、私は本当に理解していませんどうして ??

ここに働くコードがあります:

  <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を失わないように、これを追加する必要があります

<link rel="stylesheet" href="#{request.contextPath}/css/style.css" />
于 2012-05-28T21:02:38.247 に答える