Java 与上下文路径[/TestStruts]关联的命名空间[/]和操作名称[Test]没有映射的操作[未知位置]
我正在NetBeans 7.2.1中的struts 2.3.16上尝试我的第一个应用程序。输入URL时显示以下错误-Java 与上下文路径[/TestStruts]关联的命名空间[/]和操作名称[Test]没有映射的操作[未知位置],java,jsp,configuration,struts2,action-mapping,Java,Jsp,Configuration,Struts2,Action Mapping,我正在NetBeans 7.2.1中的struts 2.3.16上尝试我的第一个应用程序。输入URL时显示以下错误-http://localhost:8080/TestStruts/Test.action(有一个Test.jsp页面) Test.jsp页面: <s:form namespace="/TestStruts" action="test"> <table border="0" class=""> <tr>
http://localhost:8080/TestStruts/Test.action
(有一个Test.jsp
页面)
Test.jsp页面:
<s:form namespace="/TestStruts" action="test">
<table border="0" class="">
<tr>
<td>
<s:textfield id="name" name="name" label="Enter your name"/>
</td>
</tr>
<tr>
<td>
<s:textfield id="email" name="email" label="Enter your email"/>
</td>
</tr>
<tr>
<td></td>
<td><s:submit value="Submit"/></td>
</tr>
</table>
</s:form>
package actions;
import com.opensymphony.xwork2.ActionSupport;
public final class TestAction extends ActionSupport
{
private static final String SUCCESS = "success";
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String execute() throws Exception
{
System.out.println("name = "+name);
System.out.println("email = "+email);
return SUCCESS;
}
}
<?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">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="myapp" />
<package name="test" namespace="/TestStruts" extends="struts-default">
<action name="test" class="actions.TestAction" method="execute">
<result name="success">/Test.jsp</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
文件:strtus.xml
<s:form namespace="/TestStruts" action="test">
<table border="0" class="">
<tr>
<td>
<s:textfield id="name" name="name" label="Enter your name"/>
</td>
</tr>
<tr>
<td>
<s:textfield id="email" name="email" label="Enter your email"/>
</td>
</tr>
<tr>
<td></td>
<td><s:submit value="Submit"/></td>
</tr>
</table>
</s:form>
package actions;
import com.opensymphony.xwork2.ActionSupport;
public final class TestAction extends ActionSupport
{
private static final String SUCCESS = "success";
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String execute() throws Exception
{
System.out.println("name = "+name);
System.out.println("email = "+email);
return SUCCESS;
}
}
<?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">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="myapp" />
<package name="test" namespace="/TestStruts" extends="struts-default">
<action name="test" class="actions.TestAction" method="execute">
<result name="success">/Test.jsp</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
除了Spring的jar文件外,我还向类路径添加了以下jar文件
- commons-beanutils-1.8.0.jar
- commons-chain-1.2.jar
- commons-collections-3.1.jar
- commons-digester-2.0.jar
- commons-fileupload-1.3.jar
- commons-io-2.2.jar
- commons-lang3-3.1.jar
- commons-lang-2.4.jar
- commons-logging-1.1.3.jar
- commons-logging-api-1.1.jar
- commons-validator-1.3.1.jar
- freemarker-2.3.19.jar
- javassist-3.11.0.GA.jar
- ognl-3.0.6.jar
- struts2-core-2.3.16.jar
- struts2-spring-plugin-2.3.16.jar
- xwork-core-2.3.16.jar
当URL从
.action
更改为.jsp
时,如http://localhost:8080/TestStruts/Test.jsp
,它显示以下警告
Dec 22, 2013 9:00:44 PM org.apache.struts2.components.ServletUrlRenderer warn
WARNING: No configuration found for the specified action: 'test' in namespace: '/TestStruts'. Form action defaulting to 'action' attribute's literal value.
Dec 22, 2013 9:00:45 PM org.apache.struts2.components.ServletUrlRenderer warn
WARNING: No configuration found for the specified action: 'test' in namespace: '/TestStruts'. Form action defaulting to 'action' attribute's literal value.
我缺少什么?因为
/TestStruts
是部署应用程序的上下文路径。它与包中的命名空间具有相同的路径。试一试
http://localhost:8080/TestStruts/TestStruts/test.action
当URL从struts标记呈现时,它试图找到相应的操作配置。如果未找到配置,则发出警告 执行应用程序后,离开控制台,将URL链接(like)放在索引页上,然后运行它。
运行会很好。我已经尝试过这个URL-
http://localhost:8080/TestStruts/TestStruts/test.action
但它给出了此警告警告:找不到操作或结果:/TestStruts/TestStruts/test.action没有为操作名test映射的操作。-[未知位置]
阻止页面显示。更改此
更改了它,但没有成功。是否有我可能缺少的库?src
是位置,源根文件夹,它应该在类路径上,struts能够找到它。当我在WEB-INF
下创建一个名为classes
的文件夹并将struts.xml
文件移到该位置下时,它起了作用,WEB-INF/classes/struts.xml
,这是关于NetBeans中struts应用程序的博客中提到的。非常感谢您的时间和努力。(我今天没有投票权,明天我会做对的)。