我的html表单是访问时动态生成的,表单属性名称和个数以及type都不一定,名称也没有规律,actionform不可能事先知道,请问我应该怎么设置actionform,使他能接受到动态表单数据?这个问题之前有人提出了,但还是没怎么搞懂。比如一个调查网的问卷显示页,他有单选框,有多选框,也有text文本输入框,每个问卷都是不同的,请问如何用struts收集到这些数据呢

解决方案 »

  1.   

    别用struts了,直接jsp+servlet更简单。
      

  2.   

    你真的是、你弄的那么没有规律,让别人这么给你解决、放入List里边吧。或许能解决、
      

  3.   

    actionform 不支持动态设置属性的,比较在页面加载前actionform 会检查是否存在当前属性。楼主你的想法,可以直接使用html标签来表现页面,请求数据可以封装为一个xml,然后使用ajax.send(xlmdoc)发送,后台读取字符串,解析xml获得请求数据即可。
    或者更简单的方法,把请求数据都放在一个字符串中,然后赋值给一个hidden,在actionform 做这个hidden的属性名设定,提交后,读取ctionform中hidden属性名的值即可
      

  4.   

    <form name="" action=""  method="post">
    <table border="1"align="center" >
    <c:choose>
    <c:when test="${empty list_question }">
    <tr><td>没有符合的数据</td></tr>
    </c:when>
    <c:otherwise>
    <c:forEach items="${list_question }" var="q">
    <tr><td>
    <c:choose>
    <c:when test="${q.q_type==1 }" >
    <c:set var="dan" value="${q.q_body }"/>
    <table><tr><td>单选</td></tr><tr><td>${q.q_head }</td></tr><tr><td><c:set var="num" value="0"/><c:forTokens items="${q.q_body }" delims="&$$&" var="d"><c:set var="num" value="${num+1 }"/>${q.q_id }.${num }<input type="radio" name="${q.q_id }" value="${num }">${d }<br></c:forTokens></td></tr></table>
    </c:when>
    <c:when test="${q.q_type==2 }" >
    <table><tr><td>多选</td></tr><tr><td>${q.q_head }</td></tr><tr><td><c:set var="num" value="0"/><c:forTokens items="${q.q_body }" delims="&$$&" var="d"><c:set var="num" value="${num+1 }"/>${q.q_id }.${num }<input type="checkbox" name="${q.q_id+num }">${d }<br></c:forTokens><br></td></tr></table>
    </c:when>
    <c:when test="${q.q_type==3 }">
    <table><tr><td>填充</td></tr><tr><td>${q.q_head }</td></tr><tr><td>${q.q_id }<input type="text" size="30" name="q.q_id"></td></tr></table>
    </c:when>
    </c:choose>
    </td></tr>
    </c:forEach>
    </c:otherwise>
    </c:choose>
    <tr><td align="center"><input type="submit" value="提交"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="重填"/></td></tr>
    </table>
    </form>
      

  5.   

    传递过来list_question对象,在这个页面显示,该对象的属性有
             private int q_id;(问题编号)
    private int s_id;(问卷编号)
    private int q_type;(问题类型,值1为单选,2为多选,3为填空)
    private String q_head;(问题题目)
    private String q_body;(单选和多选时的选项,以“&$$&”隔开)
    private String q_result;(结果统计,以“,”隔开)
    问题是页面动态显示,调查卷的题目类型,选项数量无法确定,这样actionfrom无法生成, 故考虑是否可以用map,list或其他方法解决,求教
      

  6.   

    这种类似的问题我问过,可没有人回答我。我是自己想办法的!!
    把你的那个html里name啊,value啊什么全部弄到数据库里,只有可以动态的增删改查!需要收集的时候,在action里预先把这些html的name保留一下,然后用request获取!!
      

  7.   


    用动态FORM 不过我从来没用过(LZ可自行搜索struts动态FORM 听别人说貌似很好用) 
    通过Servlet倒是很容易解决 用
    request.getParameterNames()或者request.getParameterMap()实验下