在 struts 2 中检查动作变量和列表变量是否相等?

check equals for action variable and list variable in struts 2?

我有一个 jsp 页面,其中有一个 select 框,其中有一个选项列表。

我正在使用 s:if 检查等号,以便我可以在选项上显示 selected。

我的代码是:

<select class="dropbox" name="campaign" id="campaign" onchange="getCampaignQuestion();">
    <option value="">- Please Select -</option>
    <s:iterator var="AR" value="campaignList" status="currRow">
        <s:if test="%{campaignId==#AR.campaignId}">
            <option value='<s:property value="%{campaignId}" />' selected >
                <s:property value="%{campaignName}" />
            </option>
        </s:if>
        <s:else>
            <option value='<s:property value="%{campaignId}" />'>
                <s:property value="%{campaignName}" />
            </option>
        </s:else>
    </s:iterator>
</select>

活动Class

import java.util.Date;
import java.util.HashMap;
import java.util.List;

public class Campaign {

    private long campaignId;
    private long customerId;
    private int noOfOutlets;
    private String campaignName;
    private String customerName;
    private Date startDate;
    private Date expiryDate;
    private String strStartDate;
    private String strExpiryDate;
    private String status;
    private List<Outlet> outletList;
    private String outletStatus;
    private List<Outlet> userOutletList;


    public List<Outlet> getUserOutletList() {
        return userOutletList;
    }
    public void setUserOutletList(List<Outlet> userOutletList) {
        this.userOutletList = userOutletList;
    }
    public String getOutletStatus() {
        return outletStatus;
    }
    public void setOutletStatus(String outletStatus) {
        this.outletStatus = outletStatus;
    }
    public List<Outlet> getOutletList() {
        return outletList;
    }
    public void setOutletList(List<Outlet> outletList) {
        this.outletList = outletList;
    }
    public int getNoOfOutlets() {
        return noOfOutlets;
    }
    public void setNoOfOutlets(int noOfOutlets) {
        this.noOfOutlets = noOfOutlets;
    }
    public String getStrStartDate() {
        return strStartDate;
    }
    public void setStrStartDate(String strStartDate) {
        this.strStartDate = strStartDate;
    }
    public String getStrExpiryDate() {
        return strExpiryDate;
    }
    public void setStrExpiryDate(String strExpiryDate) {
        this.strExpiryDate = strExpiryDate;
    }
    public long getCustomerId() {
        return customerId;
    }
    public void setCustomerId(long customerId) {
        this.customerId = customerId;
    }
    public long getCampaignId() {
        return campaignId;
    }
    public void setCampaignId(long campaignId) {
        this.campaignId = campaignId;
    }
    public String getCampaignName() {
        return campaignName;
    }
    public void setCampaignName(String campaignName) {
        this.campaignName = campaignName;
    }
    public String getCustomerName() {
        return customerName;
    }
    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }
    public Date getStartDate() {
        return startDate;
    }
    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }
    public Date getExpiryDate() {
        return expiryDate;
    }
    public void setExpiryDate(Date expiryDate) {
        this.expiryDate = expiryDate;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }

}

这里的 campaignList 是 Campaign class 对象的列表。

所以在 s:if 标记中,我想检查具有相同名称的列表变量和操作变量之间的相等性。

像这样:

<s:if test="%{campaignId==#AR.campaignId}">

但它不起作用。

要在迭代具有同名变量的对象时访问操作变量,您可以使用 #action 来引用操作变量:

<s:if test="%{ #action.campaignId == #AR.campaignId }">

但最好将代码简化为直接的 <s:select /> 标记:

<s:select cssClass="dropbox" 
              name="campaign" 
                id="campaign" 
          onchange="getCampaignQuestion();"
         headerKey=""
       headerValue="- Please Select -"
              list="campaignList"
           listKey="campaignId"
         listValue="campaignName"
             value="campaignId" /> <!-- no iteration, no need to differentiate it here -->

更干净一些,不是吗?