Struts2注解配置之@Namespace(四)

今天开始学习@Namespace注解。

还是先看一段代码:

package com.example.actions;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/custom")
public class HelloWorld6 extends ActionSupport {
	@Action("/H6/url")
	public String execute() {
		return SUCCESS;
	}

	@Action("url")
	public String doSomething() {
		return SUCCESS;
	}
}

  • 名称空间注释允许操作类名称空间改变而不是使用Convention Plugin约定的Java包的名称。
仔细分析上述代码。HelloWorld6的包名为package com.example.actions;。如果没有@Namespace("/custom")注解,按照Convention Plugin的约定,会将此包作为根包。对应Action URL的命名空间为“/”。而有@Namespace("/custom")注解的情况下,HelloWorld6的命名空间被改成了“/custom”。但是我们在浏览器中输入http://应用服务器ip:端口/应用/H6/url访问时,没有任何问题,还可以跳转到“/H6/url.jsp”页面。
这是什么原因呢?
关键在于@Action("/H6/url")。此处“/H6/url”是对Action的名称空间进行了完全限定。实验证明@Namespace("/custom")注解对名称空间进行完全限定的不起作用。
  • 针对某个Action类进行@Namespace注释后,该注释的效果将应用于该类中所有未完全限定的action URLs
试着在浏览器中输入http://应用服务器ip:端口/应用/url访问时,报出了错误提示信息。将@Namespace("/custom")注解去掉,重新启动服务,再次访问,成功!再次将@Namespace("/custom")注解加上,重新启动服务,访问,失败。
此回合操作验证了一个问题,@Namespace注解已经作用到doSomething()方法上。
仔细观察每一个细节。该方法上有@Action("url")注解。它“url”的前面没有“/”。这是未完全限定的action URL啊。这样正好说明了针对某个Action类进行@Namespace注释后,该注释的效果将应用于该类中所有未完全限定的action URLs。
这样我们在浏览器中输入http://应用服务器ip:端口/应用/cutsom/url访问时,成功。跳转页面为“/custom/url.jsp”。



  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值