これは本当のヘッドスクラッチャーです...ボタンとしてスタイル設定されたコマンドリンクがいくつかあるので、メンテナンスを容易にするために、いくつかのパラメーターとともに含めることができる小さなhtmlフラグメントを作成して、適切にスタイル設定されたコマンドをレンダリングしますリンク。
アクションの結果がビューを変更する場合を除いて、これはうまく機能します。その時点で、「インクルード」バージョンはナビゲートするためのクリックに従うことを断固として拒否し、その理由はわかりません! アクションの結果が検証エラーになった場合、エラーが表示されるため、アクションが確実に呼び出されています。私のログではこれが確認されていますが、検証エラーがない場合、インクルードを使用しない元のバージョンは次のバージョンに移動します。ページは問題ありませんが、include を使用するバージョンはナビゲートしません。非常に単純な「hello.xhtml」ページを 2 ページ目として試してみたので、新しいビューの内容とは何の関係もないことがわかっています。
わかりやすくするために編集: ページでいくつかのボタンを使用していますが、そのほとんどは現在のページの状態を変更するだけで、すべて正常に機能しています。「インクルード」バージョンで問題が発生するのは、結果がビューの変更である場合のみです。
Portal Server 6.1/WAS 7.0 上で JSF 1.2 を実行しています。
私はこれを理解するのにあまりにも長い時間を費やしたので、何かアイデアがあるかどうかを確認してください.
更新: コメントを読み進めるのを節約するために、答えは、ナビゲーション ルールで from-action を使用していたことです。これは、commandLink で使用されている文字列と一致するだけ #{bean[action]}
です。#{applicationPage.doContinue}
いくつかのコード。
私のボタンテンプレート:
<ui:composition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xml:lang="en" lang="en">
<ui:remove>
Functional Button with arrow icon.
Parameters:
linkId = The id for the commandLink.
linkText = The text to display on the button.
linkTitle = title text to display
bean = The bean name containing the action handler.
action = The action handler to call.
</ui:remove>
<div class="btn functionalButton">
<h:commandLink id="#{linkId}" action="#{bean[action]}" title="#{linkTitle}" styleClass="functional">
#{linkText}
<span class="arrow icon" />
<span class="tl" />
<span class="tr" />
<span class="bl" />
<span class="br" />
</h:commandLink>
</div>
</ui:composition>
ページでの使用例:
<ui:include src="/WEB-INF/facelets/content/functionalButton.xhtml">
<ui:param name="linkId" value="applicationSubmit" />
<ui:param name="bean" value="#{applicationPage}" />
<ui:param name="action" value="doContinue" />
<ui:param name="linkText" value="#{msg['button_FF060_continue']} " />
</ui:include>
このバージョンはビューを変更しません。
インクルードを使用する前は、コードは次のように見えましたが (これは解決され、まったく同じ html にレンダリングされるはずです)、このバージョンではビューが問題なく変更されます。
<div class="btn functionalButton">
<h:commandLink id="applicationSubmit" styleClass="functional" action="#{applicationPage.doContinue}" title="#{msg['button_FF060_continue']}">
#{msg['button_FF060_continue']}
<span class="arrow icon" id="arrow_continue" />
<span class="tl" />
<span class="tr" />
<span class="bl" />
<span class="br" />
</h:commandLink>
</div>