我有从 Jsp 上的 requestAttribute 检索的支付网关列表,如下所示:
List<String> payGwList = (List<String>)request.getAttribute("payGwList");
我必须将它们填充到我的选择框(组合框)中,但在此之前必须进行以下检查
编辑
- Null Check
- size > 1 Check
我的代码是:
<%
<%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。
最佳答案
<% 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;"
/>
listValue
和listKey
这里甚至没有必要,因为您对它们使用相同的值。
避免 Scritplet,并确保通过其 UI 标签使用框架的所有功能。
关于java - 如何使用struts2 <s :if> tag对列表类型的变量进行空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18653334/