2012-04-12 23 views
3

これは本当に驚いています! JSPに次のコードがあります。JSP ELで属性へのアクセスを直接行うことができます

<c:param name="title" value="${slideShow.title}" /> 

このコードは、SlideShowクラスをリファクタリングしてすべての属性を公開し、getters/setterを削除するまで機能していました。だから、ELはgetterだけで動作し、属性へのアクセスは直接できません。これは本当ですか ?ゲッターを経由するのではなく、ダイレクトアトリビュートで動作させる方法はありますか?

+0

あなたはSpring MVCのようないくつかのMVCフレームワークを使用して考えがありますと? –

+1

@BorisTreukhov私はStruts 1.3 + EJB 3.0という古い痛みを伴う技術を使用しています。これは、Struts + EJB + JUnitの一部のトレーニングに使用される、小さくても生産品質のプロジェクトです。私は、EJB 3.xエンティティの良い習慣は、属性を公開し、直接属性アクセスを使用することです。しかし、私がそれをした瞬間、JSPは失敗し始めました。私はビュー層のgetters/setterを持つDTOの別の層を追加することを考えています。しかし、ゲッターなしでELがうまくいかなかったという事実は私を困惑させました。 – Parag

+0

@ BorisTreukhov特定のトレーニングのリファレンスとして使用されるため、テクノロジスタックを変更することはできません。 – Parag

答えて

4

JSP ELは厳密にJava Bean仕様に依存しているため、プロパティ値にアクセスするために他の規則を使用することはできません。

実際に、あなたはこのことについて読むことができますだから、それは非getterメソッド(ない属性)を起動することが可能ですが、唯一の特定のEL vesionからStackOverflow EL tag description

です:

維持されているEL 2.2、以来Servlet 3.0/JSP 2.2(Tomcat 7、Glassfish 3、JBoss AS 6など)の一部として、必要に応じて引数を指定して非ゲッターメソッドを呼び出すことができます。

など。 $ {bean.find(param.id)}

public Something find(String id) { 
    return someService.find(id); 
} 
+0

助けてくれてありがとう。私はgetter/settersでDTOのレイヤーを作成するつもりです – Parag

関連する問題