我正在使用Struts2 Web应用程序。一切都运行良好。所有操作都已正确映射,应用程序正确重定向到页面。但是,当我为这个特定模块(与文件上传相关)执行相同操作时,它只是失败!我不明白什么是错的,我已经尝试了各种组合" /"而且我仍然无法让页面重新指向。我做错了什么?
我的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">
-->
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources" />
<package name="default" extends="struts-default" namespace="">
<action name="login" class="com.proconsulto.action.LoginAction" method="execute">
<result name="success">/Dashboard.jsp</result>
<result name="failure">/SignIn.jsp</result>
</action>
<action name="signup" class="com.proconsulto.action.UserAction" method="addUser">
<result name="success">/Dashboard.jsp</result>
<result name="failure">/SignIn.jsp</result>
</action>
<action name="logout" class="com.proconsulto.action.LoginAction" method="logout">
<result name="success">/SignIn.jsp</result>
</action>
<action name="placerequest" class="com.proconsulto.action.PlaceRequestAction" method="placeRequest">
<result name="success">/Success.jsp</result>
</action>
</package>
</struts>
以及应该重定向的表单:
<s:form theme="simple" action="placerequest.action" enctype="multipart/form-data" method="post">
<ul style="list-style-type:none;">
<li class="field"><p id="qaz">Headline : <br/><s:textfield style="width:550px;align:center;display:inline;" name="headline" cssClass="text input"></s:textfield></li>
<li class="field"><p id="qaz">Description :<br/> <s:textarea style="width:550px;display:inline;align:center;" name="description" cssClass="textarea input"></s:textarea></li>
<li class="field"><p id="qaz">File Upload (if any) :<br/> <s:file style="height:auto;width:550px;display:inline;align:center;" name="userImage" cssClass="text input" /></li>
<div class="medium default btn"><s:submit value="Proceed"/></div>
<div class="medium default btn"><s:reset value="Reset"/></div>
placerequest
是刚刚赢得映射的动作!
请帮忙。
完整的错误消息:
输入状态报告
消息没有映射名称空间[/]的动作和与上下文路径[/ ProConsulto]相关联的动作名称[placerequest]。
description所请求的资源(没有映射名称空间[/]的动作和与上下文关联的动作名称[placerequest] 路径[/ ProConsulto]。)不可用。
答案 0 :(得分:1)
您应该为包添加名称空间,例如namespace="/"
。但是如果你想坚持namespace=""
(可能会产生问题和/或无人看管的结果),你可以尝试在表单中指定它:
<s:form action="placerequest.action" namespace="" ... >
此外,仅出于测试目的,在项目中包含Struts2 Config Browser plugin,以查看操作的映射方式(使用左侧菜单浏览它们)。
请记住在发布到生产之前将其删除;)