【问题标题】:Struts2 file upload errorsStruts2文件上传错误
【发布时间】:2013-08-30 04:06:42
【问题描述】:

我是一个使用 struts2 文件上传的人,我的动作类包含 3 个带有 getter 和 setter 的私有文件

private File myFile;
private String myFileFileName;
private String myFileContentType;

我有一些问题要澄清

  1. 我们只传递文件作为参数并将其绑定到myFile,那么应用程序如何获取文件名和内容类型?

  2. 每当我使用 myFileVariableName + "FileName"(如果文件变量是 myFile,那么文件名变量是 myFileFileName,如果文件是 xxx,那么文件名是 xxxFileName),我会得到输出,如果我做任何更改为这种格式(即,myFileVariableName + "FileName"),它变为空。是否必须使用这种格式?我可以将其更改为我想要的任何名称吗?如果是,那怎么办?

  3. 要获取内容类型,我应该使用 jst "contentType" 或 myfileVariableName + "contentType"。也是强制性的吗?

  4. 我假设,如果我使用单独的 bean 来存储我的请求变量,所有参数都绑定到该 bean 变量。但是在文件上传的情况下,只有文件变量,即本例中的 myFile 只在 bean 中获取和设置。 fileFileName 和 contentType 为空。如果我直接在我的操作类中声明这些变量,那么我会得到值,但是每当我使用单独的 bean 时,只有 File 变量可以获取和设置,而其他两个为空。为什么?

  5. 如果我使用ModelDriven,发生同样的情况,我只能获取File变量,其他两个变量为null。为什么?

我只是在我的 struts.xml 中扩展“struts-default”,没有单独的文件上传配置,因为它对我的问题没有任何影响。

【问题讨论】:

    标签: java file-io struts


    【解决方案1】:

    Action类为文件上传,声明一个File变量存放用户上传的文件,两个String变量存放文件名和内容类型。 fileUpload 拦截器 将通过设置 'X' ContentType() 并设置 自动注入上传的文件详细信息 >'X' FileName(),确保方法名拼写正确。

    文件上传功能依赖于“fileUpload Interceptor”, 确保它包含在 Action 的堆栈中。幸运的是, 默认堆栈已经包含“fileUpload Interceptor”。

    userImageContentTypeuserImageFileName 字段是可选的。如果提供了这些字段的setter 方法struts2 将设置数据。这只是为了获取上传文件的一些额外信息。如果您提供内容类型和文件名字符串,也请遵循命名标准。名称应为 ContentTypeFileName

    例如,如果动作文件中的文件属性是私有文件 uploadFile,内容类型将是 uploadFileContentType 和 文件名 UploadedFileFileName。

    在 Struts 2 中获取设置行为将值分配给变量,而不是属性值。 例如,

    public class SetTagAction extends ActionSupport{
    
    private String msg;
    
    public String setMsg(String msg) {
        this.msg = msg;
    }
    <s:set var="msg" value="%{'this is a message'}" />
    

    许多 Struts 2 开发人员认为 set tag var=”msg” 将通过 setMsg() 方法将值分配给关联的动作类。

    这是错误的,set标签不会调用setMsg()方法,它只会将“值”赋给一个名为“msg”的变量,而不是action的属性值。 p>

    【讨论】:

    • 但是 'X'contentType() 也适用于 jst contentType() 为什么?你也可以回答第 4 和第 5 个问题吗?
    • @Shameer struts2 自动附加 get/set 到变量映射
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2012-12-09
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多