如何使用struts2 <s:if> tag </s:if>来检查列表类型的变量

时间:2013-09-06 08:32:55

标签: java jsp struts2 scriptlet struts-tags

我有从Jsp上的requestAttribute检索到的支付网关列表,如下所示:

List<String> payGwList = (List<String>)request.getAttribute("payGwList");

我必须在我的选择框(组合框)中填充它们,但在此之前必须进行以下检查

修改

  
      
  1. 空检查
  2.   
  3. 尺寸&gt; 1检查
  4.   

我的代码是:

<%
 <%if(payGwList != null && payGwList.size() > 1){ //edited
%>
    <tr id="paygwrowid" >
    <td width="112" class="content">
        <s:label key="payment.paymentgateway"/><span class="requiredData">*</span>
    </td>
    <td colspan="2" class="content">
        <select name="paymentGateway" id="paymentGateway" class="content" style="width:189px;">
                <option value="0">--Select--</option>
            <%if(payGwList != null && !payGwList.isEmpty()){                    
                for(String paymentGateway : payGwList){  
            %>
                <option value="<%=paymentGateway%>"><%= paymentGateway%></option>                       
            <%}}%>
        </select>
    </td>
    </tr>
<%}%>

但是如何使用<s:if>标签实现相同,因为我不想在我的jsp上使用scriptlet。

1 个答案:

答案 0 :(得分:4)

<% if(payGwList != null){ %> = <s:if test="payGwList != null">,而

<select name="paymentGateway" id="paymentGateway" class="content" style="width:189px;">
        <option value="0">--Select--</option>
    <%if(payGwList != null && !payGwList.isEmpty()){                    
        for(String paymentGateway : payGwList){  
    %>
        <option value="<%=paymentGateway%>"><%= paymentGateway%></option>                       
    <%}}%>
</select>

变得简单

<s:select list = "payGwList"
       listKey = "paymentGateway"
     listValue = "paymentGateway"
     headerKey = "0"
   headerValue = "--Select--"
          name = "paymentGateway" 
            id = "paymentGateway" 
      cssClass = "content" 
      cssStyle = "width: 189px;" 
/>
此处甚至不需要

listValuelistKey,因为您对它们使用相同的值。

避免使用Scritplets并确保通过其UI标签使用框架的所有功能。