今天做了一个上传一组的控件。但是中途遇到一件怪事。页面:
file 文件上传标签,name 为 attachFile , 
action 类:private List<File> attachFile = new ArrayList<File>();public   List<File> setAttachFile(List<File> attachFile ){
     this.attacFile = attachFile ;
}public   List<File> getAttachFile( ){
     return this.attacFile ;
}提交后却无论如何也无法映射过去。attachFile  不能自动接收到值。我的另一个项目里都可以,找了2个小时,全部对比一次始终无果,所以希望有研究过源码的朋友 告诉一下,struts2.0关于 处理映射 页面name 名称 与 action类 带有get set 属性的类。以及希望可以简略的告诉一下调试步骤。我明天非的把那个错误揪出来,不然闷死了。哎,有时间我也得好好看看源码了,自己也只是个应用层的菜鸟,呵呵。

解决方案 »

  1.   

    set方法还返回东西的,有点奇怪嘛
    变量名attacFile也和上面定义的attachFile变量名不一致呢
      

  2.   

    setUploadFile页面设置的值(参数类型 参数名)
    这是固定写法
      

  3.   

    把那属性名字改简单点试试。。 是不是struts找不到set方法。。
      

  4.   

    public void setAttachFile(List<File> attachFile ){
    this.attachFile = attachFile ;
    }
    把他的返回值改为void,把他的变量名称改为一样的,这样的话,在运行的时候就不会因为变量的原因而出错。
      

  5.   

    private List<File> attachFile = new ArrayList<File>();
    改成:
    private List<FileForm> attachFile = new ArrayList<FileForm>();
      

  6.   

    我以前做过,是采用extjs+struts2进行的单个文件上传,我在js的file控件中的name为upload。然后对应在action中定义了
    private File upload;//上传的文件,这里的属性名保持和前台js的文件上传域的name一致   
    private String uploadFileName;  
    private String uploadContentType; 
    这些最好写成一致,然后生成get,set方法,对于struts2的页面属性和action中的get,set方法 映射是通过struts2的param拦截器完成的。   
      

  7.   

    private List<File>void attachFile = new ArrayList<File>();public   List<File> setAttachFile(List<File> attachFile ){
         this.attachFile = attachFile ;
    }public   List<File> getAttachFile( ){
         return this.attachFile ;
    }另外,struts2自带common-fileupload,所以无需写成FileForm的形式
      

  8.   

    另另外:Form要写成
    <form action="/action/upload" method="POST" enctype="multiple/form-data">
    的形式
    还有上传的文件控件必须:
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    <input type="file" name="attachFile"/>
    name必须要一样