struts2 action出错

hellen_99010 2010-04-30 08:47:52
struts2调试时出错不知是什么原因.我在struts.xml里配了二个action.第一个可以正常访问index.jsp.第二个访问时报找不到action.请教各位大虾.谢谢!!!
struts.xml

<struts>

<constant name="struts.devMode" value="true" />


<package name="basicstruts2" namespace="/" extends="struts-default">

<action name="index">
<result>/index.jsp</result>
</action>

</package>


<package name="tutorials" extends="struts-default">
<action name="HelloWorld" class="tutorials.HelloWorld">
<result>/HelloWorld.jsp</result>
</action>
<!-- Add your actions here -->
</package>


</struts>


HelloWorld.java


package tutorials;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport{
public static final String MESSAGE = "struts is up and running";
private String message;

public String execute() throws Exception {
setMessage(MESSAGE);
return SUCCESS;
}

private void setMessage(String message2) {
this.message = message2;
}

public String getMessage() {
return message;
}


}



web.xml


<display-name>Basic_Struts2_Ant</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


<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>

</web-app>


在线等答案.
...全文
3140 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
haichong520 2010-05-28
  • 打赏
  • 举报
回复
还有一个低级的可能是 Tomcat文件名有带空格 也会造成这个异常 本人亲身经历的 折腾了我半天!
hellen_99010 2010-05-05
  • 打赏
  • 举报
回复
我重新建一工程,重新总署后运行却没有问题.真的是莫名奇秒的问题.还是要谢谢大家.
艾瑞儿 2010-05-05
  • 打赏
  • 举报
回复
呵呵,问题解决了就好啊
tristan0602 2010-05-05
  • 打赏
  • 举报
回复
我是来拿分的,也是来增加人气的!
xinwugang 2010-05-05
  • 打赏
  • 举报
回复
为啥要这个namespace="/";

<struts>
<package name="user" extends="struts-default">

<action name="saveUser" class="saveUserAction">
<result name="success" type="redirect">listUser.action</result>
<result name="input">/save.jsp</result>
</action>

<action name="listUser" class="listUserAction">
<result>/list.jsp</result>
</action>
<action name="updatePUser" class="updatePUserAction">
<result name="success">/edit.jsp</result>
</action>

<action name="deleteUser" class="deleteUserAction">
<result name="success" type="redirect">listUser.action</result>
</action>

<action name="updateUser" class="updateUserAction">
<result name="success" type="redirect">listUser.action</result>
<result name="input">/edit.jsp</result>
</action>

</package>
</struts>

这个也可以啊!试试吧
Smilexiangxiang 2010-05-03
  • 打赏
  • 举报
回复
1:首先确认struts.xml 文件是否在src目录下;很多时候struts.xml放在WEB-INF下而不是还是放在classes下.
这种情况很有可能。。你试试咋看看。。
豆大仁 2010-05-03
  • 打赏
  • 举报
回复
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>


kuailexiaobuding4 2010-05-03
  • 打赏
  • 举报
回复
<?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="true" />
<constant name="struts.devMode" value="false" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.i18n.encoding" value="UTF-8"/>

<package name="default" namespace="/" extends="struts-default">
<action name="UserloginAction" class="UserloginAction">
<result name="success">/index.jsp</result>
<result name="add">/list.jsp</result>
</action>
<action name="NewspaperofficeAction" class="NewspaperofficeAction">
<result name="intil">/jsp/paper/index.jsp</result>
</action>
</package>

</struts>
参考下呵呵
phoebird 2010-05-01
  • 打赏
  • 举报
回复
看了这么多。发现你的命名空间路径不对头。
hellen_99010 2010-05-01
  • 打赏
  • 举报
回复
命名那里出了问题?
tpshowcom 2010-05-01
  • 打赏
  • 举报
回复
问题分析有如下几种情况:(几乎都是因为初学者粗心大意,再加上struts一些细节的扰乱)

1:首先确认struts.xml 文件是否在src目录下;很多时候struts.xml放在WEB-INF下而不是还是放在classes下.

2:检查struts.xml文件的语法是否正确:(下面引用 Can ' s blogs)

如果第一步正确的话那就可能是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">
<struts>
<package name="struts2" extends="struts-default">
<action name="login" class="com.test.action.LoginAction">
<result name="success">/result.jsp</result>
</action>
</package>
</struts>
那么就只有是红字的部分写错了 查看你的是否吧struts-default中间的“-”错写成了struts=default;或者struts写成sturts等拼写错误.

3:还有人其他一切正常却因为把配置文件struts.xml错误的存储为struts2.xml.

4:但是我遇到的问题都不是上面的问题,因为我用myeclipse开发直接部署到tomcat下面,无论我怎么尝试修改上面的配置,甚至反复检查代码,结果都出错,结果发现myeclipse在部署的时候没有把struts.xml配置到tomcat到webapps的对应项目下面,然后手工添加了struts.xml问题解决,运行一切ok!

kaisa316 2010-05-01
  • 打赏
  • 举报
回复
我在说一下比较特殊的情况吧。
你在src下的struts.xml文件可能是对的。但有时myeclipse不能及时编译,导致WEB-INF\classes下的struts.xml不是最新的。你打开对比一下。
hellen_99010 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ayuan231 的回复:]
There is no Action mapped for namespace / and action name HelloWorld这个的意思是说你的action(即HelloWorld.action)相应的命名空间。出现这样的问题的时候,第一个要去检查HelloWorld.action是否是在namespace目录下。第二个问题,那么就是你的struts.xml问题了。你看到你的两个用的是同……
[/Quote]

我把第一个action 注掉了还会报同样的错呢?
ayuan231 2010-04-30
  • 打赏
  • 举报
回复
There is no Action mapped for namespace / and action name HelloWorld这个的意思是说你的action(即HelloWorld.action)相应的命名空间。出现这样的问题的时候,第一个要去检查HelloWorld.action是否是在namespace目录下。第二个问题,那么就是你的struts.xml问题了。你看到你的两个用的是同样的namespace命名空间(因为struts.xml中的package 下的namespace属性本来就是/*,即使当前文件下的所有文件都要经过我当前这个package下的action类来控制转发),这个就可以产生了访问上的冲突。如果非要用两个package,那么请命名不同的namespace。
亲努力啊 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hellen_99010 的回复:]
试了不行,你这应该是struts1的配置吧?哎....我也不知问题出在那.弄了好久.叫别人看了,都没有解诀.
[/Quote]

那是2的
chinage9 2010-04-30
  • 打赏
  • 举报
回复
<package name="tutorials" extends="struts-default">
<action name="HelloWorld" class="tutorials.HelloWorld">
<result>/HelloWorld.jsp</result>
</action>
<!-- Add your actions here -->
</package>

会不会是路径不对呢?把 <result>/HelloWorld.jsp</result>
改成 <result>HelloWorld.jsp</result>试试呢?

wanglifeng595 2010-04-30
  • 打赏
  • 举报
回复

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
改成

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
hellen_99010 2010-04-30
  • 打赏
  • 举报
回复
试了不行,你这应该是struts1的配置吧?哎....我也不知问题出在那.弄了好久.叫别人看了,都没有解诀.
亲努力啊 2010-04-30
  • 打赏
  • 举报
回复
<!-- Struts2 filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

<filter>
<filter-name>struts2-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


web.xml改成这个试试
亲努力啊 2010-04-30
  • 打赏
  • 举报
回复
看样子搞不定....关注等高手 - -!
加载更多回复(10)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧