私のアプリケーションでは、JSF1.2を使用しています。ファセットtaglibを使用したくないので、jsp:include属性を使用してJSPをインクルードしました。スタイルクラスの値を決定する変数をサブページに渡したい。以下はparent.jspのコードです
<f:view>
...
<f:subview id="navigation">
<jsp:include page="/subpage/child.jsp">
<jsp:param value="page9" name="pageName"/>
</jsp:include>
</f:subview>
...
</f:view>
子jspは
<f:subview id="navigation">
...
<t:commandLink id="page9" value="mylink" action="#{manageBean.someAction}"
styleClass="#{param.pageName == 'page9'?'stepLinkActive':'stepLink'}" />
...
</f:subview>
上記のコードでは、stepActiveLinkクラスはmyLinkに適用されていません。実際、#{param.pageName}の値は空白です。
以下のようにコマンドリンクを囲んで使用すると機能するSOでこのリンクを見つけました
<c:if test='${param.pagename eq "page9"}'>
<t:commandLink id="page9"
value="#{msgs['DICT.ISSUE_CONTROL.SPECIAL_INFO']} "
action="#{bondIssueBean.gotoModifyPage9}" styleClass="stepLinkActive" />
</c:if>
<c:if test='${param.pagename ne "page9"}'>
<t:commandLink id="page9"
value="#{msgs['DICT.ISSUE_CONTROL.SPECIAL_INFO']} "
action="#{bondIssueBean.gotoModifyPage9}" styleClass="stepLink" />
</c:if>
スタイルクラスを変更するためだけにコマンドリンク定義を複製する必要があるコマンドリンクがたくさんあります。今後、他のパラメータが渡されると、重複するコードが増える可能性があるのではないかと思います。私の質問は
- JSFELがパラメータ値を識別できないのはなぜですか-${param.paramName}?また、#{param ['pageName']}を使用してparam変数にアクセスしようとしましたが、うまくいきませんでした。
- 上記のif..elseを置き換えて、単一のコマンドリンク定義を使用するにはどうすればよいですか?