一般的页面信息 都能用DynaActionForm收集了,但是碰到checkbox这样的一样name的就搞不了。配置信息是这样<form-property name="productID" type="java.lang.Integer"></form-property>
页面的表单
<form action="step3.do" method="post">
<input type="checkbox" name="productID" value="1">产品1<br>
<input type="checkbox" name="productID" value="2">产品2<br>
<input type="checkbox" name="productID" value="3">产品3<br>
<input type="checkbox" name="productID" value="4">产品4<br>
<input type="checkbox" name="productID" value="5">产品5<br>
<input type="submit" value="下一步"/>
</form>我在Action里取不到值是NULL
DynaActionForm daf=(DynaActionForm)form;
System.out.println(daf.get("productID"));

解决方案 »

  1.   

    在问一个问题:我用struts 1.2模仿一个购物流程,第一步收集用户名 第二步收集购买的货物 第三步 收集地址 第四步 从session里取出上面的所有数据。
    用数字和英文就没问题,用中文的 名字和 地址 展示的时候就是乱码。
    我已经在页面设置成这样了啊<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
      

  2.   

    <form-property name="productID" type="java.lang.Integer[]"></form-property>
      

  3.   

    1.不一定要用DynaActionForm的,就用ActionForm,然后用实体类封装,对实体类提供公共接口。就像这样:
    private 实体类 类名=new 实体类();
    Getter和setter方法2.解决struts的中文乱码问题,方法很多,我觉得这个方法最简单。在src根目录下自己定义一个ActionServlet类,继承ActionSevlet,对其中的process方法重写。
    Package StrutsDemo
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionServlet;public class MyActionServlet extends ActionServlet{
    protected void process(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException {
    /**@todo Override this org.apache.struts.action.ActionServlet method*/    
    request.setCharacterEncoding("GB2312");//就加这一行一切都解决了
    super.process(request, response);
    }
    }
    然后在web-xml中修改下:
       <servlet>
       <servlet-name>action</servlet-name>
       <servlet-class>strutsdemo.MyActionServlet</servlet-class>
       <servlet>3.对于复选框,在form中用数组封装复选框的值。具体的网上找找看 ,应该很多。
      

  4.   

    在.xml文件中
    <form-property name="productID" type="java.lang.Integer[]"> </form-property>
    在action中调用
    DynaActionForm daf=(DynaActionForm)form;
    Integer[] it= (Integer[])daf.get("productID");另外:
    struts处理中文,最好用过滤器