tomcat - 使用 Struts 2 上传文件时出现 NullPointerException

标签 tomcat file-upload struts

这是 JSP

<s:form action="uploadfile.action" enctype="multipart/form-data" method="POST"  cssClass="bodyClass">
    <tr>
        <td>
            Image:
        </td>
        <td style="width: 200px;">
            <s:file id='image' name='uploadedfile' cssClass="formTextField"  />
        </td>
        <td>
            <input type="submit" value="Upload" class="button"/>
        </td>
    </tr>

</s:form>

这是 Struts.xml

 <package name="upload" namespace="/upload" extends="struts-default">
            <action name="uploadfile" class="com.secureweb.web.upload.UploadAction">
                <result name="uploadImage">/pages/fileupload/uploadimage.jsp</result>
            </action>
    </package>

Action 类

public class UploadAction extends ActionSupport {
    private File uploadedfile;

    public String execute() throws Exception {
        try {
           System.out.println(uploadedfile.getName());
        } catch (Exception e) {
            System.out.println(e);
        }
        return "uploadImage";
    }

    public File getUploadedfile() {
        return uploadedfile;
    }

    public void setUploadedfile(File uploadedfile) {
        this.uploadedfile = uploadedfile;
    }
}

我项目中的库

 commons-beanutils-1.7.0.jar
    commons-lang-2.3.jar
    displaytag-1.2.jar
    displaytag-export-poi-1.2.jar
    displaytag-portlet-1.2.jar
    log4j-1.2.14.jar
    pljava.jar
    postgresql-8.3-603.jdbc4.jar
    postgresql-8.3-604.jdbc3.jar
    cos.jar

    Struts 2 2.1.8 Basic- commons-io-1.3.2.jar
                          commons-fileupload-1.2.1.jar
                          commons-logging-1.0.4.jar
                          freemarker-2.3.15.jar
                          ognl-2.7.3.jar
                          struts2-core-2.1.8.1.jar
                          xwork-core-2.1.6.jar
    Then there is persistance.jar of EJB
    And there is also Hibernate Library.

没有其他

结果为 NullPointerException,因为属性 uploadedfile 为空。文件上传工作不正常。为什么该变量总是值为 null。我的操作系统是 Ubuntu Linux 11.4,Web 服务器 - Apache Tomcat 6。IDE- Netbeans。

最佳答案

可能是因为 Struts 2 已经实现了完整的文件上传功能,而无需手动完成所有工作。

请参阅file upload docs并使用框架已经为您提供的内容。

这里有一些额外的问题:

  • 除非您已将默认主题设置为 "simple" ,表单生成的 HTML 将无效;默认主题在表格行/单元格内发出表单输入元素。
  • "action" <s:form> 的属性标记应该是操作的名称​​没有 .action后缀。

解决这些问题后,您的代码将按原样运行。您是否修改了默认拦截器堆栈?

关于tomcat - 使用 Struts 2 上传文件时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193709/

相关文章:

php - Android 允许将多个文件上传(最大 150 MB)到 PHP 服务器

grails - 如何从 Grails 中上传的文件中获取字节 (byte[])

java - 如何将文件从 MySQL BLOB 下载发送给最终用户?

java - Spring Security + Struts 1.2 集成

java - 我可以在这里使用什么描述性变量名称?

tomcat - Ubuntu 16.04 在 Netbeans 8.2 中添加 Tomcat9 - 错误 :The specified Server Location (Catalina Home) folder is not valid

java - 添加/修改 Tomcat 库

javascript - 如何在文件上传时显示加载图形?

java - Apache Spark maven tomcat :run

jsf - 整个应用程序的单个用户?