日期:2014-05-17  浏览次数:20703 次

Struts2 标签问题
我在后台Action中有:
public class Test{
  private List<Map< String,String>> list;
  public void setList( List<Map< String,String>> list){
  this.list=list;
  }
  public List<Map< String,String>> getList(){
  return this.list;
  }
}
在JSP页面有
 <from ...>
  <input >
  <input >
  <input>
</from>
以上是简化了的一个表单...项目中有点复杂
关键点是---怎么在form表单中把用户输入的值通过list传到后台Action中去
list中的map的作用是:我想通过键值对的方式,将用户输入的值一一对应起来
比如map的key就是input的name或者什么的...
请教高手这个怎么做啊...

------解决方案--------------------
看下struts2 showcase中的 action conversion吧。应该有点帮助。

例子中一般给的都是设置Element_[action属性名]=某一实体bean,你可以具体查看及测试下是否可以设置成为map.
比如针对你的代码一般是:

TestAction.class
 List<TestBean> nTs ;
 //set/get忽略
TestAction_conversion..properties
Element_nTs = com.test.TestBean; //这里你可测试下,看是否可以设置成你要的那种。

jsp:

<s:iterator values status='sta'>
<s:textfield name="%{'nTs ['+#stat.index+'].attrName'}" />
</s:iterator>

或者使用js动态生成输入框。

------解决方案--------------------
我用的是struts1,我只做过这种情况的,就是action中是List<对象>details,而页面上处理比如
<html:hidden property="details[${i}].salaryStandardId" value="${g.salaryStandardId}"/>