当前位置: 首页 > 知识库问答 >
问题:

支柱 2 文件上载 - 空指针异常

韩彦君
2023-03-14

我正在尝试结合使用Struts2和Spring上传文件。但是,在到达action类之后,我的文件、filename和文件内容类型都显示为null。我试图寻找问题,但没有结果。下面是我上传文件的代码。

index.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<s:head />
</head>
 <s:actionerror />
<s:form action="uploadAction" method="POST" enctype="multipart/form-data">

<s:file name="fileUpload" label="Choose File" size="40" />

<s:submit value="Upload" name="submit" />

</s:form>

Struts.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

    <struts>
        <include file="struts-default.xml"/>
        <package name="a" extends="struts-default">

   <action name="resultAction" class="ManagePlanDataFileUploadActionBean"   method="executeFileUploadDemo">

            <interceptor-ref name="fileUpload">
                <param name="maximumSize">10240</param>
                <param name="allowedTypes">text/plain</param>
            </interceptor-ref>                
            <interceptor-ref name="defaultStack" />
    <result name="success">displayResultsJSP</result>

</action>
        </package>
    </struts>

applicationContext-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/jee
    http://www.springframework.org/schema/jee/spring-jee-2.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
    <bean id="ManagePlanDataFileUploadActionBean" scope="prototype"

    class="com.hix.action.planmanagement.ManagePlanDataFileUploadAction">

    </bean>
</beans>

管理上传动作

package com.hix.action.planmgmt;

import java.io.File;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;

import com.opensymphony.xwork2.ActionSupport;

public class ManagePlanUploadAction extends ActionSupport{

      private HttpServletRequest request;

      private File fileUpload;
      private String fileUploadContentType;
      private String fileUploadFileName;

       public void setServletRequest(HttpServletRequest paramHttpServletRequest) {
             this.request = paramHttpServletRequest;
       }

       public HttpServletRequest getServletRequest() {
             return request;
       }

        public File getFileUpload() {
            return fileUpload;
        }

        public void setFileUpload(File fileUpload) {
            this.fileUpload = fileUpload;
        }

        public String getFileUploadContentType() {
            return fileUploadContentType;
        }

        public void setFileUploadContentType(String fileUploadContentType) {
            this.fileUploadContentType = fileUploadContentType;
        }

        public String getFileUploadFileName() {
            return fileUploadFileName;
        }

        public void setFileUploadFileName(String fileUploadFileName) {
            this.fileUploadFileName = fileUploadFileName;
        }

        public String executeFileUploadDemo() throws Exception {
            try {
                String filePath = "C:/Myuploads2";
                System.out.println("Server path:" + filePath);
                File fileToCreate = new File(filePath, fileUploadFileName);
                FileUtils.copyFile(fileUpload, fileToCreate);
                } catch(Exception e) {
                    e.printStackTrace();
                    addActionError(e.getMessage());
                    return SUCCESS;
                }       
                    System.out.println("File :" + fileUpload);
                    System.out.println("Filename : " + fileUploadFileName);
                    System.out.println("File type : " + fileUploadContentType);
                return SUCCESS; 
        }
}

磁贴.xml

<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>
<definition name="displayResultsJSP" template="/jsp/planmgmt/Result.jsp">

<put-attribute name="header" value="/jsp/template/defaultHeader.jsp" /> 

<put-attribute name="footer" value="/jsp/template/defaultFooter.jsp" />

</definition>

</tiles-definitions>

Result.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>

<body>
   File Name : <s:property value="fileUploadFileName"/> 
  <br/>
   Content Type : <s:property value="fileUploadContentType"/> 
  <br/>
   File : <s:property value="fileUpload"/> 
</body>
</html>

共有1个答案

殷永嘉
2023-03-14

我的问题现在解决了。我不得不将JAR(commons文件上传和commons io)不仅添加到我的类路径中,还添加到RAD的“部署程序集”。

 类似资料:
  • 我在strut中得到空指针异常。我只做了一个简单的Hello world示例。当我单击时显示此错误。这是我的代码 web.xml struts.xml 操作类别: 索引.jsp 它显示索引.jsp争辩当我点击你好它显示错误。 HelloWorld.jsp

  • 问题内容: 我在登录模式提交按钮的单击侦听器中遇到问题。 这是错误。 我对什么是空指针异常有一个合理的了解,并且已经彻底搜索了一个类似于我的问题。我试图以几种方式重新格式化点击侦听器,确保我具有正确的视图ID等。 显然,还有更多但与我认为无关的话题。这是带有按钮的对话框的XML文件。 任何帮助将不胜感激。 问题答案: 是因为它不属于 当你调用内部的,它要寻找一个你的活动的布局中。 试试这个代替:

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 我正在eclipse中开发一个java项目。为了分发程序,我通过eclipse中的导出函数创建了一个可运行的.jar文件。 在我的程序中,加载存储在名为“tableImages”的文件夹中的多个图像。我通过类加载器加载图像(您将在下面找到代码片段)。问题如下:从.jar文件执行程序时,在加载上述文件夹中的.png文件之一时,它会抛出 NullPointerException。现在有趣的是,完全相同

  • 我正在尝试上载一个csv文件到服务器。下面是我的HTML代码: 还有我的JS:- 我面临以下错误:- 加载资源失败:服务器响应的状态为500(HTTP/1.1 500) 可能未经处理的拒绝:{“data”:{“timestamp”:1510643953084,“status”:500,“error”:“内部服务器错误”,“exception”:“java.lang.NullPointerExcep