以下信息并非原创,而是总结CSDN各大牛人所得。
最近在做一个项目时遇到了上诉问题。主要是在上传文件时。有时成功有时不成功。返回上诉错误信息,对于我来说主要是没有更改默认上传文件大小造成的。
No result defined for action action.UploadAction and result input 是Strucs2的拦截器拦截后返回的信息,遇到拦截错误Structs2会返回默认input.。并且拦截后相应的action不会得到执行。
在网上看了下资料,对于 No result defined for action action.UploadAction and result input 错误通常有一下原因:
1: 在你的action中
private File[] myFile;
private String[] myFileFileName;
private String[] myFileContentType;
三者缺一不可。
2: 页面的属性和action里的属性个数、名称、类型不一致造成。
3: form表单里忘记加入:enctype="multipart/form-data"
4:上传的文件过大,struts默认设置的最大上传文件为2M,可以在struts配置文件里加 <constant name="struts.multipart.maxSize" value="45000000"></constant>把最大文件限制修改大
刚刚看到一个帖子,觉得很好,顺便总结过来了。
struts.multipart.maxSize struts.multipart.maxSize 默认限制为2M,修改maximumSize为5000000,大约5M。依旧无效。
Struts.xml相关配置如下:
<action name="upload" class="action.UploadAction">
<result name="success">/success.jsp</result>
<result name="input">/upload.jsp</result>
<interceptor-ref name="fileUpload">
<param name=" maximumSize ">5000000</param>
</interceptor-ref>
</action>
解决方法:
在struts.xml中加入 <constant name="struts.multipart.maxSize" value="10000000"/> ,大约10M
原因:maximumSize须小于 struts.multipart.maxSize,而默认值不足5M,所以修改maximumSize无效,
应先修改 struts.multipart.maxSize
另外对于实体中的file上传,刚刚在一个帖子里面看到有人说好像不支持,由于没有验证,所以现在这里mark下。如下
<
form
action
=
"resource_create"
method
=
"post"
enctype ="multipart/form-data">
文件名称:
<
input
name
=
"resource.title"
type
=
"text"
> <
br
>
注解:
<
textarea
name
=
"resource.content"
rows
=
"5"
cols
=
"20"
></
textarea
><
br
/><%--
--%>
附件:
<
input
type
=
"file"
name
=
"resource.upFile"
><
br
/>
下载分数:
<
select
name
=
"resource.points"
>
<
option
value
=
"0"
label
=
"0"
/>
<
option
value
=
"1"
label
=
"1"
/>
</
select
>
<
input
value
=
"重置"
type
=
"reset"
>
<
input
value
=
"确定"
type
=
"submit"
>
</
form
>