web-dev-qa-db-ja.com

JSTL条件付きチェック

現在のページでは、JSTLを使用して、フォームでデータが利用可能かどうかを確認しています。私が直面している問題は、「データがない場合、テキストフィールドも表示されない」ということです。タグを使用して解決することはできますが、ページ全体に他の種類のコードがある場合は、多くのことが必要になります。誰かが私にこの問題のよりクリーンな解決策を提案できますか?

<c:if test="${salesData!=null}">
  <c:if test="${fn:length(salesBundle.salesArea) > 0}">
  <input type="text" id="sales_area" class="salesManagerStyle">
  </c:if>
</c:if>
16
t0mcat

testには複数の条件を設定できます。

<c:if test="${salesData != null && fn:length(salesBundle.salesArea) > 0}">
    <input type="text" id="sales_area" class="salesManagerStyle">
</c:if>

ただし、emptyキーワードを使用して両方 nullcheckとlengthcheckを実行することもできます。

<c:if test="${not empty salesData.salesArea}">
    <input type="text" id="sales_area" class="salesManagerStyle">
</c:if>

それはあなたが今得ることができる最高のものです。 再利用ページの他の場所で同じ条件を実行する必要がある場合は、<c:set>で保存することもできます。

<c:set var="hasSalesData" value="${not empty salesData.salesArea}" />
...
<c:if test="${hasSalesData}">
    <input type="text" id="sales_area" class="salesManagerStyle">
</c:if>
...
<c:if test="${hasSalesData}">
    Foo
</c:if>
17
BalusC

私は自分のWebページにできるだけロジックを入れないようにしています。

「インターフェイス層にはアプリケーション処理が比較的ありません。ウィンドウまたはWebページはタスク要求を中間層に転送します」GraigLarman、Applying UML and Patterns第3版575ページ-情報システム:古典的な3層アーキテクチャ。

また、データを永続化する前に、クライアントレベルで制御/検証を行います...しかし、それがレガシーであり、Webページだけが触れることができるかどうかを推測します...これは意味があります

0
Jules Martel