本人最近在学习框架知识,用Struts2+Spring+Hibernate做了一个网上商城的后台管理,其中遇到了一个问题,大体是这样的:当页面提交了admin/order!add后,在Action中执行add(),和getConsignee_Message(),导致在下个页面调用getConsignee_Message()时报Hibernate: select product_se0_.id as id3_0_, product_se0_.name as name3_0_, product_se0_.intro as intro3_0_, product_se0_.type_order as type4_3_0_, product_se0_.auditing as auditing3_0_, product_se0_.date as date3_0_, product_se0_.first_type_id as first7_3_0_ from t_product_second product_se0_ where product_se0_.id=?
4 1111.0 11
$$$$$$$$1
2009-10-29 10:43:12 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
严重: Could not find action or result
No result defined for action com.webshop.action.OrderAction and result input
。。希望有人能指点指点我!!!!代码如下:struts的配置
<struts>
<!-- 整合Spring -->
<constant name="struts.objectFactory" value="spring" /> <constant name="struts.devMode" value="true" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 上传大小, 5M -->
<constant name="struts.multipart.maxSize" value="5242880"/>
<package name="admin" namespace="/admin" extends="struts-default">
<global-results>
<result name = "noSession">/login.jsp</result>
</global-results>
。
<action name="order" class="OrderAction">
<result name="change">/WEB-INF/admin/order_change_product.jsp</result>
<result name="address">/WEB-INF/admin/order_address.jsp</result>
<result name="collect">/WEB-INF/admin/order_ok.jsp</result>
</action>
</package>
</struts>
web.xml配置<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Struts2 配置 -->
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.webshop.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring 配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
页面代码:<body>
<form action="admin/order!add" method="post">
。
</form>
</body>
Action代码:public String getConsignee_Message() throws Exception {
....
return "collect";
}
public String add() throws Exception {
....
return "address";
}
4 1111.0 11
$$$$$$$$1
2009-10-29 10:43:12 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
严重: Could not find action or result
No result defined for action com.webshop.action.OrderAction and result input
。。希望有人能指点指点我!!!!代码如下:struts的配置
<struts>
<!-- 整合Spring -->
<constant name="struts.objectFactory" value="spring" /> <constant name="struts.devMode" value="true" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 上传大小, 5M -->
<constant name="struts.multipart.maxSize" value="5242880"/>
<package name="admin" namespace="/admin" extends="struts-default">
<global-results>
<result name = "noSession">/login.jsp</result>
</global-results>
。
<action name="order" class="OrderAction">
<result name="change">/WEB-INF/admin/order_change_product.jsp</result>
<result name="address">/WEB-INF/admin/order_address.jsp</result>
<result name="collect">/WEB-INF/admin/order_ok.jsp</result>
</action>
</package>
</struts>
web.xml配置<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Struts2 配置 -->
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.webshop.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring 配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
页面代码:<body>
<form action="admin/order!add" method="post">
。
</form>
</body>
Action代码:public String getConsignee_Message() throws Exception {
....
return "collect";
}
public String add() throws Exception {
....
return "address";
}
No result defined for action com.webshop.action.OrderAction and result input 错误说的是你struts.xml中配置的result没有input的
不好意思!!我再说下吧!!我程序的原意是,a.jsp有个请求admin/order!add ,在action里执行完add()后,返回b.jsp页面,再在这个b.jsp页面发送另一个请求admin/order!getConsignee_Message,在action里执行getConsignee_Message()!!现在的程序,在a.jsp页面请求执行add()方法后就执行了getConsignee_Message()。然后执行return“address”,跳转到b.jsp页面,在b.jsp页面发送admin/order!getConsignee_Message请求时,就没执行时struts2 源码中DefaultActionInvocation类的invoke()里的“resultCode = invokeActionOnly();”所以才会有那个异常!!!我不知道这是为什么???望大家帮帮忙!!这个问题折磨我三天了!!!
public String getConsignee_Message() throws Exception {
System.out.println("$$$$$$$$"+orders.size()); return "collect";
}