我有一张表格,我有:
JSP:
<form name="xyz" action="upload">
<input type="file" name="upload"/>
<input type="submit" name="submit" value="submit"/>
</form>
struts.xml
<action name="upload" class="uploadClass" method="saveExcel">
<result name="success">page1.jsp</result>
<result name="error">error.jsp</result>
</action>
为此,它给出了一个错误:HTTP状态404 - 没有为动作和结果输入定义结果
如果我将STRUTS.xml
修改为:
<action name="upload" class="uploadClass" method="saveExcel">
<result name="success">page1.jsp</result>
<result name="error">error.jsp</result>
<result name="input">page1.jsp</result>
</action>
当我尝试提交表单时,页面会重新加载。
如何解决这个问题?
答案 0 :(得分:2)
如果您要上传文件,请对表单使用编码multipart/form-data
。
<form name="xyz" action="upload" enctype="multipart/form-data">
<input type="file" name="upload"/>
<input type="submit" name="submit" value="submit"/>
</form>
如果请求未编码到multipart/form-data
并且发生文件上传错误,则Struts不接受请求发送的文件。您可以检查JSP中使用s:actionerror
或s:fielderror
标记的错误。使用File Upload Error Messages配置默认消息。注意,如果您的操作有错误并且您调用了默认拦截器堆栈,则workflow
拦截器将返回INPUT
结果。它给你“刷新”效果。
答案 1 :(得分:0)
错误消息表示尚未为您的操作定义名为input的结果。结果输入是Struts在验证传递给操作的参数时出现的默认结果。
因此,如果验证中存在问题,struts-2框架会在struts.xml中查找“输入”的映射。如果你没有在struts.xml中定义它。它会抛出那个错误,可以'如果你已定义它,它会将你重定向到映射的jsp页面。所以当你第二次提交它时,你已经定义了结果类型输入,它会将你发送到你为它定义page1.jsp的同一页面。所以当您发送到同一页面时,您的页面会重新加载。