web-dev-qa-db-ja.com

ELの文字列を比較するために==またはeqを選択する必要がありますか?

_==_とeqは、ELを使用して文字列比較テストを行うと同じ結果になります。

_    <c:if test="${person.sokande_i == 'endast_usa'}">Endast USA</c:if>
    <c:if test="${person.sokande_i == 'alla'}">Alla länder</c:if>
    <c:if test="${person.sokande_i == 'alla_utom_usa'}">Alla utom USA</c:if>
_

代わりにeqを使用する必要がありますか? _==_は整数専用ですか?ただし、文字列でも機能します。 AFAIK _==_は、hashCodesが等しく、eqが「意味の異なる」ことを意味するかどうかをテストします。

別の question は_==_とeqが同じことをすることを示しています。

ここに違いはありませんか? IS私が述べているものとは異なります:_==_はhashCodeを見て、eqequals(...)の実装を調べます。

44

両方とも同じです。文のように読みやすいので、ELでeqを使用します。

44
adarshr

両方とも同じです。両方 ==およびeqは、次のコードになります。

jspContext.findAttribute("person.sokande_i").equals("endast_usa")

eL用

${person.sokande_i == 'endast_usa'}
26
Ramesh PVK

ドキュメント によると、同じことです

に加えて。値とメソッドの式で説明されている[]演算子、ELは次の演算子を提供します。これらの演算子は右辺値式でのみ使用できます。
[...]
リレーショナル==、eq、!= 、ne、<、lt、>、gt、<=、ge、> =、le。比較は、他の値またはブール、ストリング、整数、または浮動小数点リテラルに対して行うことができます。

ただし、XMLセーフであるため、eq, ne, lt, gt, ge, leなどの文字列演算子が存在します。たとえば、<=のようにエスケープする必要はありません。

説明されています ここ

ELの便利な機能は、数値またはオブジェクト間で比較を実行できることです。この機能は、主にカスタムタグ属性の値に使用されますが、JSPページとの比較結果(trueまたはfalse)を書き出すためにも同様に使用できます。 ELは、次の比較演算子を提供します。

•==またはeq
•!=またはne
•<またはlt
•>またはgt
•<=またはle
•> =またはge

各演算子の2番目のバージョンは、JSP XML構文でエンティティ参照を使用する必要を回避するために存在します。ただし、演​​算子の動作は同じです。

23
ToYonos