私は書き直しています。 jspからJSTL/ELまで、私は問題に直面しています。それはおそらく非常にシンプルですが、私はELに少し慣れています。ELを使って重複を避ける方法は?
final List<Person> l = new ArrayList<Person>();
personList.add(...);
.
.
request.setAttribute("personList", l);
そして、私の中では:
は、ここで私は、サーブレット/コントローラで
...やってんですよ。 JSP:
<c:forEach var="person" items="${personList}">
${person.name}
</c:forEach>
しかし、私はのsetAttributeにし、のforEachで両方を使用していますので、私は "personList" を複製しています。この複製をどのように取り除くことができますか?
理想的には私は、サーブレットとの.jsp(ELを使用して、ないスクリプトレット)両方から参照できることを、パブリック静的最終列ように、定数を有するたい。
もちろん、私はこの重複を排除したい理由は、私が(「S」で)者、たとえば、にpersonListの名前を変更することにした場合、私は現在、2つの事を変更する必要があるということであり、これはエラー - です易しい。私が定数を持っていれば、その変更を行う必要がある場所は1つだけです。
EDIT誰かが、定数を使用すると、定数の名前を変更した場合でも変更する場所が2つ必要であるとコメントしました。しかし、これを行うことができるかどうかには大きな違いがあります。
request.setAttribute(Constants.PERSON_LIST、l);
* PERSON_LIST *の名前を変更して、コンパイル時に改行する誤植をしました。
私が間違えた場合に中:
request.setAttribute("persnList", l); // forgetting an 'o' here
の.jspは「personList」と入力ミスではない「persnList」を使用している場合、これはlamelyコンパイルし、実行時に失敗します。
私はあなたの "答え"に同意しません。間違いなく重複しているので、なぜ私の質問の終わりに説明します。 2つの場所で何かを変更する必要がありますが、スクリプトレットを使用すると、この重複を持たないことは全く些細なことです。それは変数と同じではありません。 –
* "プログラムを書いて、ある行に変数を宣言した場合、後で..." * ...ある文字列を持つメソッドの1行の変数を片手で比較する、サーブレットでは、一方で、* .jsp *ではそれはありません!もう一度、スクリプトレットを使用すると、このような重複がないことは自明です。 –
定数を宣言すると、どのように違うのですか?あなたは定数の名前を変更することを決めた場合でも、それを修正する必要がありますか? – Kevin