我尝试创建一个新的动作类并将其添加到struts.xml
,动作类已成功编译,但是当我运行tomcat时,它显示请求的资源在索引页本身上不可用404错误。< / p>
CreateUser.jsp
<s:form action = "CreateUserAction" >
<s:textfield name = "name" label = "Name" />
<s:textfield name = "userName" label = "User Name" />
<s:submit value = "Register" />
</s:form>
CreateUserAction.java
public String execute() {
setMessage("Hello " + getUserName());
return "SUCCESS";
}
struts.xml中
<package name="default" extends="struts-default">
<action name="CreateUserAction" class="com.ecommerce.action.CreateUserAction">
<result name="SUCCESS">/success.jsp</result>
</action>
</package>
答案 0 :(得分:4)
Struts2中的操作映射到从配置构建的URL。当请求的url与动作名称和命名空间匹配时,则执行该命令,否则调度程序返回错误代码404。 Struts2实现为过滤器,它正在寻找在其配置中映射的请求。例如,如果我希望它过滤我将在web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果您在索引页面本身上说错误404,那么您应该问自己哪个URL对应于哪个URL以及通过配置将该操作映射到该URL。如果您需要更详细的图片说明配置是什么以及您可以输入哪些URL来执行操作,请安装config-browser插件。
答案 1 :(得分:0)
针对上述问题:&#34;在struts.xml中配置操作类时,struts2中没有请求的资源&#34; 我有个建议。
将所有外部jar复制并粘贴到文件夹lib中(WebContent - &gt; WEB-INF - &gt; lib) 从构建路径中删除所有外部jar(项目 - &gt; buildpath - &gt;配置构建路径)
我发现这个解决方案适用于带有Tomacat 7的eclipse Luna