最近在struts2的项目开发中,碰到一个小问题:action中的字段customerName,在<s:url>的<s:param>中得不到。调试了将近一天的时间,才有结果。
现在,解释一下出现问题的原因。
首先,显示相应的代码片段。
jsp代码(红字为解析不到的<s:param>):
<s:textfield name="customerName" value="customerName" />
<s:iterator value="resultList" status="list">
<s:url id="url">
<s:param name="customerName1" value="customerName" />
<param name="customerName2" value="#list.customerName" />
</s:url>
</s:iterator>
Action的代码:
public class MyAction extends ActionSupport{
String customerName;
List<ResultBean> resultList;
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public List<ResultBean> getResultList() {
return resultList;
}
public void setResultList(List<ResultBean> resultList) {
this.resultList = resultList;
}
public String excute(){
...
...
}
}
ResultBean类型的定义:
public class ResultBean {
String customerName;
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
不能解析的原因是:
ResultBean类中含有相同名称的字段——customerName,<s:iterator>标签中优先解析ResultBean中的字段。ResultBean和action中字段名相同,如出现上述情况:
<s:param name="customerName1" value="customerName" />
页面将不会解析。