1

私は次のようなことをしようとしています(JavaServer Facesで実行されているJSPページで):

<%
String myTitle = "Cool Action!";
String myAction = "coolAction";
%>

<h:commandLink value="#{myTitle}" action="#{myAction}" />

JSF は JSP 変数を認識できないため (少なくともこの表記では?)、これは機能しません。

JSF タグから JSP 変数にアクセスする方法はありますか (セッション/ページ スコープの Bean を使用せずに)、または <% %> JSP ブロック内から commandLink のような JSF タグを定義する方法はありますか? ありがとう!

4

1 に答える 1

3

それらを少なくともリクエストスコープに入れる必要があります。EL は、とりわけ、HttpServletRequestHttpSessionおよびの属性を解決しますServletContext

<%
request.setAttribute("myTitle", "Cool Action!");
request.setAttribute("myAction", "coolAction");
%>

しかし、これは JSF の使い方としてはまったく間違っています。適切な MVC 設計イデオロギーに従うには、旧式の JSPスクリプトレットを使用しないでください。さらに、JSP の後継である Facelets は、どの形式のスクリプトレットもサポートしていません。

具体的な機能要件に応じて、Bean プロパティとして指定するバッキング Bean クラスを作成できます。

<h:commandLink value="#{bean.myTitle}" action="#{bean.myAction}" />

または、直接「ハードコード」するだけ<h:commandLink>です。

<h:commandLink value="Cool Action!" action="coolAction" />

<f:loadBundle>または、 でロードまたは登録する i18n リソースバンドルに少なくとも値を入れ<resource-bundle>ますfaces-config.xml

<h:commandLink value="#{text['myTitle']}" action="coolAction" />
于 2012-04-24T22:13:39.287 に答える