1

問題:
i)JSF2アプリケーションで、タブコントロールを使用してページを作成したいのですが、ユーザーがタブをクリックすると、以下のパネルのコンテンツがサーバーのxhtmlファイルからajax呼び出しを介して読み込まれます。
ii)これでグレースフルデグラデーション(Javascriptが無効になっている場合)をサポートして、タブをクリックするとHTTPリクエストが発生し、新しいページが読み込まれるようにします...またはその逆で、プログレッシブエンハンスメントを使用します。

部分的な解決策: i)BalusCがjsf 2 outputLinkをajaxする方法に
投稿したコード例でこれを達成できると思います:-

<h:form>
<f:ajax render=":include">
    <h:commandLink value="Home" action="#{menuManager.setPage('home')}" /><br />
    <h:commandLink value="FAQ" action="#{menuManager.setPage('faq')}" /><br />
    <h:commandLink value="Contact" action="#{menuManager.setPage('contact')}" /><br />
</f:ajax>

</h:form>
<h:panelGroup id="include">
    <ui:include src="#{menuManager.page}.xhtml" />
</h:panelGroup>

質問
これを拡張して問題を解決するにはどうすればよいですか(ii)または、他のまったく異なる方法はありますか?たぶん私はnoscriptでこれを達成できると思いますが、方法がわかりません!

編集:考えられる解決策-まだ検証していません
上記のコードは、ajaxが無効になっている場合でも機能するはずです。http://www.laliluna.de/articles/posts/jsf-2-evaluation-test.html :)
エレガントによると、HTTPを介して機能するはずです。やってみます。

4

1 に答える 1

2

<h:commandButton>の代わりにを使用すると<h:commandLink>、JSが無効になっている場合でも問題なく機能します。コマンドリンクでは、JavaScriptを使用しているかどうかに関係なく、「非表示」のPOSTフォームを送信するためにJSが必要です。必要に応じて、CSSを挿入して、コマンドボタンをリンクのように見せることができます(たとえば、境界線、背景、はめ込みなどを削除します)。

まったく別の方法として、リクエストパラメータまたはpathinfoとしてページを使用する<h:outputLink>か、ページを使用してGETリクエストを作成し、代わりにインクルードページを目立たないように取得し、関連部分を抽出してHTMLDOMツリーにインクルードします。<h:link>jQuery.load()

于 2012-01-03T21:30:01.607 に答える