当前位置: 代码迷 >> Java Web开发 >> struts2提交表单的有关问题
  详细解决方案

struts2提交表单的有关问题

热度:110   发布时间:2016-04-16 21:59:33.0
struts2提交表单的问题
我的class是这样的形式:

private String moduleId;
private int q_ordernum;
private String title;
private String type;
private List<String> contentList;

前台用s:iterator标签循环出了n个选项组

<s:iterator value="testQuestionList" id="tql" status="q">
<form id="<s:property value="#tql.moduleId"/>_<s:property value="#tql.q_ordernum"/>"  method="post" action="">
<s:property value="#tql.title"/>?<br>
<s:iterator value="#tql.contentList" id="cl">
<input type=radio name="???" value="<s:property/>"><s:property/>   
</s:iterator>
</form>
</s:iterator>

界面如下:

问题是当我想提交表单,也就是取出所有选项所选的内容,由于数量不固定,我不能像以前那样建一个类,里面写上变量名,然后在界面用<input type=radio name="变量名" value="<s:property/>">这样去取值了,请问又什么好的办法可以把不固定的这样的数据取出来传到action么?
我想到的办法就是用js拼接字符串然后用发送到后台,请问有更好的办法么?谢谢大家了
------解决方案--------------------
<input type=radio name="???"
可以不用get/set这样的映射的方式
把这些name改为 题型_radioname 这样的格式
然后后台可以从request中取出所有选中的radio的值,再用正则匹配下,选出每题具体选择的值
------解决方案--------------------
你把title和选项封装成一个对象,然后Action定义一个public List<Model> list=new ArrayList<Model>();

通过外层循环的status可以得到当前循环的索引,也就是q.index,name你可以这样写:
<s:property value="#tql.title"  name="list[q.index].title"/>?<br>
<input type=radio name="list[q.index].checkedItem" value="<s:property/>">

这样传到后台的list的大小就是你有几道题,Model的title属性封装了题目标题,Model的checkedItem封装了题目的选项。
大概是这么个意思,仅供参考。
------解决方案--------------------
用struts2的域模型接收参数,建一个实体类,里有2个成员变量,一个是你要迭代个数,另一个是一个Map集合,还有一个根据个数封装属性的一个方法。前台只要传2个值到后台就行,<input type=radio name="???" value="<s:property/>"><s:property/>  这里的name要有规律命名。这样对象会全部封装到Map集合里,取的时候也方便。
------解决方案--------------------
引用:
Quote: 引用:

你把title和选项封装成一个对象,然后Action定义一个public List<Model> list=new ArrayList<Model>();

通过外层循环的status可以得到当前循环的索引,也就是q.index,name你可以这样写:
<s:property value="#tql.title"  name="list[q.index].title"/>?<br>
<input type=radio name="list[q.index].checkedItem" value="<s:property/>">

这样传到后台的list的大小就是你有几道题,Model的title属性封装了题目标题,Model的checkedItem封装了题目的选项。
大概是这么个意思,仅供参考。
恩,主要是题目数量不固定,我没法在对象中定义变量的数量啊,这样一道题可以,多了就不行了吧?

我说的就是不确定数目的解决办法,你后台定义一个List,传几个就有几个,当然可以了。
  相关解决方案