导入的struts使用拦截器出现No result defined for action XXX and result XXX错误

抓住梦想 2014-10-14 11:56:11
拦截器ai.invoke()返回正常,但如果return "webAppTologin" 则会出现No result defined for action XXX and result XXX错误

奇怪的是如果我把导入struts的内容放到主struts中,则可以正常使用


主struts

<constant name="struts.action.extension" value="action"></constant>

<package name="struts2" extends="json-default" >
<!-- 定义全局result -->
<global-results>
<result name="webAppTologin" type="redirect">/logind.jsp</result>
</global-results>


导入的struts

<struts>

<constant name="struts.action.extension" value="action"></constant>

<package name="webapp" extends="json-default" >
<interceptors>
<interceptor name="webAppLoginedCheck" class="com.interceptor.WebAppLoginedCheckInterceptor"/>
<interceptor-stack name="webAppStack">
<interceptor-ref name="webAppLoginedCheck" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<action name="homeMenuWebApp" class="webAppAction" method="homeMenuWebApp">
<result name="success" type="json">
<param name="root">homeMenuUrlList</param>
</result>
<interceptor-ref name="webAppStack" />
</action>
</package>

</struts>


简单action方法

public String homeMenuWebApp()throws Exception{
return success;
}


...全文
5544 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
舞我王 2017-06-30
  • 打赏
  • 举报
回复
问题找到了:input隐藏域的默认值value 写的是String,后台实体类用Long接收的
zy_think123 2014-10-15
  • 打赏
  • 举报
回复
注意点就好了,有时候仔细检查一下,然后想一下知识点,不要烦躁
抓住梦想 2014-10-14
  • 打赏
  • 举报
回复
由于我的第二个struts需要用到的属性基本与主struts的相同,这时候如果每个属性都要重写则不好,这时可以在导入的struts的package 中的设置继承主struts,只要下面一句就可以了
<package name="webapp" extends="struts2">
抓住梦想 2014-10-14
  • 打赏
  • 举报
回复
原因找到了<global-results>属于是 <package>的子标签,仅作用于该<package>中的*.action,不作用于input进来的struts的<package>内的其他action,因此会报No result defined for action XXX and result XXX错误,如果添加
<result name="webAppTologin" type="redirect">/pages/webApp/index.jsp</result>
就正常了 第二个struts可以重新设置全局变量

	<package name="webapp" extends="json-default">
	
	   <!-- 配置自定义拦截器LoginedCheckInterceptor -->
        <interceptors>
            <interceptor name="webAppLoginedCheck" class="com.interceptor.WebAppLoginedCheckInterceptor"/>
             <interceptor-stack name="webAppStack">
                <interceptor-ref name="webAppLoginedCheck" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors> 
        <global-results>
            <!-- 定义名为exception的全局result -->
             <result name="exception">/exception.jsp</result>
             <result name="webAppTologin" type="redirect">/pages/webApp/unlogin.jsp</result>
        </global-results>
         <!-- 定义全局异常映射-->
        <global-exception-mappings>  
            <!-- 捕捉到Exception异常(所有异常)时跳转到exception所命名的视图上   -->
            <exception-mapping exception="java.lang.Exception" result="exception"/>
        </global-exception-mappings> 
		
	   <action name="homeMenuWebApp" class="webAppAction" method="homeMenuWebApp">
		   <result name="success" type="json">
		   		<param name="root">homeMenuUrlList</param>
			</result>
			<!-- 
			<result name="webAppTologin" type="redirect">/pages/webApp/index.jsp</result>
			 -->
			<interceptor-ref name="webAppStack" />
		</action>
    </package>

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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