在 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 -->
更干净一些,不是吗?
我有一个 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 -->
更干净一些,不是吗?