现在项目使用struts2的注解进行action的加载。比如TemplateAction类
@ParentPackage("default")//default继承自struts-default
@Action(name = "template")
@Results( { @Result(name = "doQuery", type = NullResult.class, value = "/jsp/depms/temp/temp_list.jsp", params = {}),
@Result(name = "doQueryCorp", type = NullResult.class, value = "/jsp/depms/temp/temp_list_corp.jsp", params = {}),
@Result(name = "doAdd", type = NullResult.class, value = "/jsp/depms/temp/temp_add.jsp", params = {}),
@Result(name = "doAddCorp", type = NullResult.class, value = "/jsp/depms/temp/temp_add_corp.jsp", params = {}),
@Result(name = "preEdit", type = NullResult.class, value = "/jsp/depms/temp/temp_edit.jsp", params = {}),
@Result(name = "doEditBase", type = NullResult.class, value = "/jsp/depms/temp/temp_edit_base.jsp", params = {}),
@Result(name = "doView", type = NullResult.class, value = "/jsp/depms/temp/temp_view.jsp", params = {}) })
在控制输出了
class:class com.kehaoinfo.khsafe.depms.template.action.TemplateAction parent:null current:com.kehaoinfo.khsafe.depms.template.action如果struts加载成功的情况下在调试模式下查看Dispatcher.configurationManager.configuration.runtimeConfiguration(此类是一个接口)查看内容如下
/dailyCheck //这个为其他action加载的
/templateChapter //这个为其他action加载的
/template
/plan //这个为其他action加载的
前台页面访问template!doQuery.action就可以。struts加载失败 查看内容为
/khsafe/depms/template/action/accImage//这个为其他action加载的
/khsafe/depms/template/action/template
/khsafe/depms/template/action/templateChapter//这个为其他action加载的
前台页面访问进需要加上/khsafe/depms/template/action/template!doQuery.action 才能进行访问。原先以为这个是命名空间的问题,于是乎给templateAction加上了一个
@NameSpace(value="") //指定使用默认命名空间。
还是有问题,于是我在试了一下添加一个命名空间
@NameSpace(value="/test") //指定命名空间需要加上test
原本以为问题能够解决,由于问题随机的(有时候加载成功)。重启了有N次之后。未加载的情况还是出现了。请高手帮办给个思路,正在看struts2.1.6的源代码。头疼先来这上边要个思路
@ParentPackage("default")//default继承自struts-default
@Action(name = "template")
@Results( { @Result(name = "doQuery", type = NullResult.class, value = "/jsp/depms/temp/temp_list.jsp", params = {}),
@Result(name = "doQueryCorp", type = NullResult.class, value = "/jsp/depms/temp/temp_list_corp.jsp", params = {}),
@Result(name = "doAdd", type = NullResult.class, value = "/jsp/depms/temp/temp_add.jsp", params = {}),
@Result(name = "doAddCorp", type = NullResult.class, value = "/jsp/depms/temp/temp_add_corp.jsp", params = {}),
@Result(name = "preEdit", type = NullResult.class, value = "/jsp/depms/temp/temp_edit.jsp", params = {}),
@Result(name = "doEditBase", type = NullResult.class, value = "/jsp/depms/temp/temp_edit_base.jsp", params = {}),
@Result(name = "doView", type = NullResult.class, value = "/jsp/depms/temp/temp_view.jsp", params = {}) })
在控制输出了
class:class com.kehaoinfo.khsafe.depms.template.action.TemplateAction parent:null current:com.kehaoinfo.khsafe.depms.template.action如果struts加载成功的情况下在调试模式下查看Dispatcher.configurationManager.configuration.runtimeConfiguration(此类是一个接口)查看内容如下
/dailyCheck //这个为其他action加载的
/templateChapter //这个为其他action加载的
/template
/plan //这个为其他action加载的
前台页面访问template!doQuery.action就可以。struts加载失败 查看内容为
/khsafe/depms/template/action/accImage//这个为其他action加载的
/khsafe/depms/template/action/template
/khsafe/depms/template/action/templateChapter//这个为其他action加载的
前台页面访问进需要加上/khsafe/depms/template/action/template!doQuery.action 才能进行访问。原先以为这个是命名空间的问题,于是乎给templateAction加上了一个
@NameSpace(value="") //指定使用默认命名空间。
还是有问题,于是我在试了一下添加一个命名空间
@NameSpace(value="/test") //指定命名空间需要加上test
原本以为问题能够解决,由于问题随机的(有时候加载成功)。重启了有N次之后。未加载的情况还是出现了。请高手帮办给个思路,正在看struts2.1.6的源代码。头疼先来这上边要个思路
解决方案 »
- 从j2se 过度 j2ee 应该怎么一步一步的去学 最好详细一些在线等
- entitybean 返回問題
- tomcat5.5,oracle10g连接池问题
- 关于jsp分页问题
- Web应用在 WebLogic中发布成功,但对请求地址区分大小写,怎么解决?
- 标题:一个jsp小问题,各位兄弟帮帮忙
- 关于Ajax问题,菜鸟跪求大神帮忙
- 急救,如何控制单个账号登陆次数
- Activiti 和 hibernate 整合时候出现的问题
- 大佬们,天猫淘宝的单点登录是怎么实现的?
- 谁能帮我解释一下这段代码啊,关于struts2标签的...
- 求解决方案:Mina框架作为服务端、Socket作为客户端、如何使双方进行交互?
org.apache.struts2.config.Action actionAnn =
(org.apache.struts2.config.Action) cls.getAnnotation(org.apache.struts2.config.Action.class);
if (actionAnn != null) { //这里判断是否为空,出现命名空间不正确的原因就是actionAnn为空,但是为什么为空不是很了解。
actionName = actionAnn.name();
if (actionAnn.namespace().equals(org.apache.struts2.config.Action.DEFAULT_NAMESPACE)) {
actionNamespace = "";
} else {
actionNamespace = actionAnn.namespace();
}
} else {
for (String pkg : pkgs) {
if (name.startsWith(pkg)) {
if (LOG.isDebugEnabled()) {
LOG.debug("ClasspathPackageProvider: Processing class "+name);
}
name = name.substring(pkg.length() + 1);
actionNamespace = "";
actionName = name;
int pos = name.lastIndexOf('.');
if (pos > -1) {
actionNamespace = "/" + name.substring(0, pos).replace('.','/');
actionName = name.substring(pos+1);
}
break;
}
}
最后的解决方法在@Action(name = "template")上边添加命名空间为默认
@Namespace(value="")
这样访问就正常了。结贴。