2011-11-09 10 views
1

私はStruts 2.2.3をTiles 2.1.4で使用しています。それはまったく問題なく動作しますが、今ではEL式を使用しようとしていますが、動作させることはできません。 Struts2では<s:property value="${getText('Dashboard.label')}"/>を使用でき、バンドルからメッセージを取得します。私はタイル定義で同じものを使用したいと思います。これまでのところ、私はタイルStruts/EL式

<context-param> 
    <param-name>org.apache.tiles.evaluator.AttributeEvaluator</param-name> 
    <param-value>org.apache.tiles.evaluator.el.ELAttributeEvaluator</param-value> 
</context-param> 

は今、私は定義に次の式を使用したいweb.xmlにコンテキストのparamを追加しました:

<put-attribute name="pane-title" 
       expression="${getText('Dashboard.label')}" 
       cascade="true"/> 

問題であることを、私はこれを行う際に、

機能:画面が言って作成することができなかった「:のgetText」

だから私は、私は何かが欠けていたとし

を見つけていないが、私はなぜ知りません。何か案は?

答えて

0

私はそれがうまくいくとは思わない。あなたは普通の古いJSP ELとしてOGNL式を評価しようとしています。私はいくつかの潜在的な解決策を見ています。

私は一番簡単な方法を試してみましょう(長期的にはあなたのニーズに合わないかもしれませんが):getDashboardLabel関数を使って値を公開し、getText呼び出しを行います。こので、簡単なプロパティクエリ${dashboardLabel}を許可する必要があります。

これは、現行の要求がELを解決する方法に対してELを解決するTilesに依存します。S2では、薄いラッパーを使用して値スタックをJSP ELに公開します。

これはうまくいかない場合や、ニーズに合わない場合は、値スタックにアクセスしてorg.apache.tiles.evaluator.el.ELAttributeEvaluatorを置き換えるTiles属性エバリュエーターを作成できるかどうかを確認することです。私はどれくらい簡単に/難しいかわからない、私はチェックしなければならないだろう。既存のStrutsタグと同じようにOGNLを評価することができれば、かなり面白いかもしれません。

ああ、JSP関数ライブラリも作成できます。私はそれがどのようにELエバリュエーターでうまくいくかわからない。 JSPではかなり簡単です。

+1

ありがとうございました。あなたが言ったように、それを回避する簡単な方法はないようです。最後に、Tilesの属性pane-titleを取得し、タグs:textに使用するJSPを作成しました。そのJSPを他のパッケージで使用し、tiles.xmlにキーを設定するだけです。 Struts2とTilesを簡単に統合できるように、あなたが提案する2番目のオプションが興味深いと思います。 –

+1

@ JoseLMartinez-Avial Yep、それはうまくいくでしょう。私は私の(あまりにも長い)リストの物事のリストの第二の選択肢を置く - 私は同意する、それは興味深い考えであり、かなりクールかもしれない。 –