Struts2的action标签问题,烦躁!

微山寒叶 2013-04-03 09:34:11
初学Struts2,感觉一碰到struts.xml文件就各种容易出些莫名其妙的问题。。。错误提示找不着北。。。
下面这个问题一直解决不了:
struts.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="*Action" class="org.crazyit.app.action.LoginAction" method="{1}">
<result name="my">/exception.jsp</result>
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
<action name="tag" class="org.crazyit.app.action.TagAction" >
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>


两个action文件LoginAction和TagAction是放在同一个包下的,没有什么功能,就是返回一下“success”、“error"这些。

写了两个jsp文件,第一个是在form里调用了LoginAction:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><s:text name="loginPage" /></title>
</head>
<body>
<s:form action="loginAction" method="post">
<s:textfield name="username" key="user"/>
<s:password name="password" key="pass" />
<s:submit key="login" theme="simple"/>
<s:submit key="registe" theme="simple" method="registe" />
</s:form>
</body>
</html>


这个没什么问题,正常调用了LoginAction。可是另外一个jsp文件仅仅是使用action标签调用TagAction,就一直提示:
严重: Could not execute action: /tag
There is no Action mapped for action name tag. - [unknown location]
没法正确执行。这个jsp文件很简单:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2 Tags</title>
</head>
<body>
<s:action name="tag" />
</body>
</html>


检查半天没发现哪不对,我在第一个jsp文件里,直接把<s:form action="loginAction" method="post">改成<s:form action="tag" method="post">都是能正常调用到TagAction,产生相应的结果的,为什么到了action标签这就一直提示没有映射到tag的action呢?
而且我在第二个jsp里吧action标签里的tag换成loginAction也提示一样的错误:没有映射到loginAction的action。
另外,相应的文件的位置都是正确的。

太奇怪了,实在是理解不了。。。大神们帮我看看到底是哪用错了?脆弱的struts.xml,折磨疯了
...全文
241 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
微山寒叶 2013-04-04
  • 打赏
  • 举报
回复
原来是namespace的问题,谢谢了。
bb_tarek 2013-04-03
  • 打赏
  • 举报
回复
试着这样写<s:action name="tag" executeResult="true" namespace="/">
a234152738 2013-04-03
  • 打赏
  • 举报
回复
看来你没理解<s:action>的用法 去看看什么情况你就知道了

67,513

社区成员

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

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