书上的一个例子,提交的时候找不到那个action,明明是定义好的,为什么找不到呢?HTTP Status 404 - No result defined for action com.v512.blog.action.CommentAction and result successtype Status reportmessage No result defined for action com.v512.blog.action.CommentAction and result successdescription The requested resource (No result defined for action com.v512.blog.action.CommentAction and result success) is not available.
Apache Tomcat/6.0.20相关的配置:
spring:
<bean id="homeAction" class="com.v512.blog.action.HomeAction"
scope="prototype">
<property name="blogManager" ref="blogManager" />
<property name="categoryManager" ref="categoryManager" />
<property name="entryManager" ref="entryManager" />
<property name="commentManager" ref="commentManager" />
<property name="linkManager" ref="linkManager" />
</bean>struts.xml:<package name="main" extends="struts-default">
<global-results>
<result name="closed" type="redirect">/tempClosed.jsp
</result>
<result name="input" type="redirect">/list</result>
</global-results>
<!-- list,获取博文的列表 -->
<action name="list" class="homeAction" method="list">
<result name="success">/home.jsp</result>
</action>
<!-- load,获取特定的一篇博文 -->
<action name="load" class="homeAction" method="load">
<result name="success">/entry.jsp</result>
</action>
<!-- comment,评论特定的一篇博文 -->
<action name="comment" class="homeAction" method="comment">
<result name="success" type="redirect">${redirectCommentUrl}</result>
</action>
....其实要访问的action是HomeAction里的方法comment,并不是CommentAction,所以奇怪,它怎么会去找那个类?
Apache Tomcat/6.0.20相关的配置:
spring:
<bean id="homeAction" class="com.v512.blog.action.HomeAction"
scope="prototype">
<property name="blogManager" ref="blogManager" />
<property name="categoryManager" ref="categoryManager" />
<property name="entryManager" ref="entryManager" />
<property name="commentManager" ref="commentManager" />
<property name="linkManager" ref="linkManager" />
</bean>struts.xml:<package name="main" extends="struts-default">
<global-results>
<result name="closed" type="redirect">/tempClosed.jsp
</result>
<result name="input" type="redirect">/list</result>
</global-results>
<!-- list,获取博文的列表 -->
<action name="list" class="homeAction" method="list">
<result name="success">/home.jsp</result>
</action>
<!-- load,获取特定的一篇博文 -->
<action name="load" class="homeAction" method="load">
<result name="success">/entry.jsp</result>
</action>
<!-- comment,评论特定的一篇博文 -->
<action name="comment" class="homeAction" method="comment">
<result name="success" type="redirect">${redirectCommentUrl}</result>
</action>
....其实要访问的action是HomeAction里的方法comment,并不是CommentAction,所以奇怪,它怎么会去找那个类?
homeAction!comment
具体不晓得,差不多就是这个意思
<result name="success">/home.jsp</result>
</action> name 是url的访问路径,method 是你调用的方法名称
还有一个疑问,你的homeAction 是没放在包里面吗
建议LZ 试下 http://localhost:8080/xxx/list.do
这就是你要找的.
你在Sturts.xml把CommentAction配好又是什么效果,试试...
<action name="home" class="homeAction" >
<result name="success">/entry.jsp</result>
</action>
在调用的时候这样写home!方法名.action 就可以访问方法了
<?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>
<!-- 设置Spring的IoC容器管理Struts中的action -->
<constant name="struts.objectFactory" value="spring" /> <!-- main package中定义普通用户使用博客所使用action-->
<package name="main" namespace="/" extends="struts-default">
<global-results>
<result name="closed" type="redirect">/tempClosed.jsp
</result>
<result name="input" type="redirect">/list</result>
</global-results>
<!-- list,获取博文的列表 -->
<action name="list" class="homeAction" method="list">
<result name="success">/home.jsp</result>
</action>
<!-- load,获取特定的一篇博文 -->
<action name="load" class="homeAction" method="load">
<result name="success">/entry.jsp</result>
</action>
<!-- comment,评论特定的一篇博文 -->
<action name="comment" class="homeAction" method="comment">
<result name="success" type="redirect">${redirectCommentUrl}</result>
</action>
<!-- subscribe,订阅博客 -->
<action name="subscribe" class="subscribeAction">
<result name="xml" type="stream">
<!-- 设置输出内容的类型 -->
<param name="contentType">text/xml</param>
<!-- 这里需要和Action里的属性名一致 -->
<param name="inputName">xmlStream</param>
</result>
</action>
</package> <!--定义博主登录、注销、修改密码所使用action-->
<package name="user" namespace="/user" extends="struts-default">
<action name="login" class="userAction" method="login">
<result name="success" type="redirect">/admin</result>
<result name="input">/login.jsp</result>
</action>
<action name="logout" class="userAction" method="logout">
<result name="success" type="redirect">/login.jsp</result>
</action>
<action name="changePassword" class="userAction" method="changePassword">
<result name="success">/admin/changePassword.jsp
</result>
<result name="input">/admin/changePassword.jsp
</result>
</action>
</package>
<!--定义博主使用博客全部管理功能所使用action-->
<package name="admin" namespace="/admin" extends="struts-default">
<action name="editBlog" class="blogAction" method="load">
<result name="success">/admin/editBlogConfig.jsp
</result>
</action>
<action name="updateBlog" class="blogAction" method="update">
<result name="success" type="redirect">/admin/editBlog
</result>
<result name="input" type="redirect">/admin/editBlog
</result>
</action>
<action name="listCategorys" class="categoryAction" method="list">
<result name="success">/admin/listCategorys.jsp
</result>
</action>
<action name="addCategory" class="categoryAction" method="add">
<result name="success" type="redirect">/admin/listCategorys
</result>
<result name="input">/admin/addCategory.jsp
</result>
</action>
<action name="editCategory" class="categoryAction" method="load">
<result name="success">/admin/editCategory.jsp
</result>
<result name="input" type="redirect">/admin/listCategorys
</result>
</action>
<action name="updateCategory" class="categoryAction" method="update">
<result name="success" type="redirect">/admin/listCategorys
</result>
<result name="input" type="redirect">/admin/listCategorys
</result>
</action>
<action name="deleteCategory" class="categoryAction" method="delete">
<result name="success" type="redirect">/admin/listCategorys
</result>
</action> <action name="listLinks" class="linkAction" method="list">
<result name="success">/admin/listLinks.jsp
</result>
</action>
<action name="addLink" class="linkAction" method="add">
<result name="success" type="redirect">/admin/listLinks
</result>
<result name="input">/admin/addLink.jsp
</result>
</action>
<action name="editLink" class="linkAction" method="load">
<result name="success">/admin/editLink.jsp</result>
<result name="input" type="redirect">/admin/listLinks
</result>
</action>
<action name="updateLink" class="linkAction" method="update">
<result name="success" type="redirect">/admin/listLinks
</result>
<result name="input" type="redirect">/admin/listLinks
</result>
</action>
<action name="deleteLink" class="linkAction" method="delete">
<result name="success" type="redirect">/admin/listLinks
</result>
</action> <action name="listEntrys" class="entryAction" method="list">
<result name="success">/admin/listEntrys.jsp
</result>
</action>
<action name="preAddEntry" class="entryAction" method="prepare">
<result name="success">/admin/addEntry.jsp
</result>
</action>
<action name="addEntry" class="entryAction" method="add">
<result name="success" type="redirect">/admin/listEntrys
</result>
<result name="input" type="redirect">/admin/preAddEntry
</result>
</action>
<action name="editEntry" class="entryAction" method="load">
<result name="success">/admin/editEntry.jsp</result>
<result name="input" type="redirect">/admin/listEntrys
</result>
</action>
<action name="updateEntry" class="entryAction" method="update">
<result name="success" type="redirect">/admin/listEntrys
</result>
<result name="input" type="redirect">/admin/listEntrys
</result>
</action>
<action name="deleteEntry" class="entryAction" method="delete">
<result name="success" type="redirect">/admin/listEntrys
</result>
</action> <action name="listComments" class="commentAction" method="list">
<result name="success">/admin/listComments.jsp
</result>
</action>
<action name="handleComments" class="commentAction" method="updateOrDelete">
<result name="success" type="redirect">/admin/listComments
</result>
</action>
</package>
</struts>
<s:form action="comment" validate="true">
<s:hidden name="comment.entry.id" value="%{entry.id}" />
<s:textfield label="作者" name="comment.author"/>
<s:textfield label="email" name="comment.email"/>
<s:textarea label="内容" name="comment.content" rows="4" cols="40"/>
<s:submit value="提交"/>
</s:form>
这是jsp的代码。
还不如只配置一个action
用这种方式调用的好
<s:form action="home!comment.action" validate="true">
<s:hidden name="comment.entry.id" value="%{entry.id}" />
<s:textfield label="作者" name="comment.author"/>
<s:textfield label="email" name="comment.email"/>
<s:textarea label="内容" name="comment.content" rows="4" cols="40"/>
<s:submit value="提交"/>
</s:form>
<result name="topage">${target}.jsp</result>
</action>在action类里面返回的时候设置一下返回页面的名称就可以了
例如private String target;
//target的get和set方法
//然后target的set方法里面设置一个页面名称
return "topage";
估计是因为你有一个action的名字这个这个相似
改为<s:form action="comment" validate="true" namespace="/">