現在のページでは、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>
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>
私は自分のWebページにできるだけロジックを入れないようにしています。
「インターフェイス層にはアプリケーション処理が比較的ありません。ウィンドウまたはWebページはタスク要求を中間層に転送します」GraigLarman、Applying UML and Patterns第3版575ページ-情報システム:古典的な3層アーキテクチャ。
また、データを永続化する前に、クライアントレベルで制御/検証を行います...しかし、それがレガシーであり、Webページだけが触れることができるかどうかを推測します...これは意味があります