JSTL条件检查

时间:2011-06-02 20:01:52

标签: jsp jstl el

在我当前的页面上,我使用JSTL检查数据是否可用于我的表单。我面临的问题是“如果没有数据,我也没有看到文本字段”。我可以使用和标签来解决它,但这将需要很多if else else if all类型的代码贯穿整个页面。任何人都可以建议我更清洁地解决这个问题吗?

<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>

2 个答案:

答案 0 :(得分:17)

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>

答案 1 :(得分:0)

我尝试在我的网页中尽可能少地使用逻辑

  

“接口层相对没有应用程序处理;窗口或网页将任务请求转发到中间层”Graig Larman,应用UML和模式第3版第575页 - 信息系统:经典的三层架构。

在持久化数据之前,还要在客户端进行控制/验证......但我想如果它是遗留的,网页是你可以触摸的唯一东西...这就是感觉