2012-04-24 18 views
1

私は(のJavaServer Facesので実行されている、JSPページ内)のような何かをやろうとしている:JSFはJSPを見ることができないので、へのアクセスJSP変数

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

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

これは、動作していません変数(少なくともこの表記で?)。

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

答えて

1

少なくともリクエストスコープに配置する必要があります。 ELは、とりわけ、HttpServletRequest,HttpSessionおよびServletContextの属性を解決します。

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

これは完全にJSFを使用する間違った方法です。適切なMVC設計イデオロギーに従うには、ではなく、古い形式のJSP スクリプトレットを使用する必要があります。さらに、JSPの後続のFaceletsはスクリプトレットの形式をサポートしていません。あなたは、Beanのプロパティーとして

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

か、単に<h:commandLink>に直接それを「ハードコード」を、それらを指定する特徴

具体的な機能要件に応じて、バッキングBeanクラスを作成することができます。

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

またはあなたが<f:loadBundle>によってロードまたはfaces-config.xml<resource-bundle>で登録したi18nリソースバンドルの少なくとも値置く:

<h:commandLink value="#{text['myTitle']}" action="coolAction" /> 
関連する問題