2.关于Action的配置
配置到底是什么包中的文件的注释会被注解分析器分析成配置呢?
这里需要加入asm-commons.jar asm-tree.jar 后面的包没有试需要不需要!但是看名字好像不需要!
创建包: com.oa.www.action;
import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; @ParentPackage("struts-default") @Namespace("/") public class LoginAction extends ActionSupport { @Action(value="login",results={@Result(name="success",location="success.jsp") ,@Result(name="input",location="input.jsp")}) public String execute(){ return SUCCESS; } }
一个简单的例子 这里先理解一下每个注解什么意思!@ParentPackage 里面是struts-default 相当于 xml 中extends=“struts-default” 下面是此注解的源代码
说明了它是用来设置父包的 并且这个注释只能用在固定的类型上@Target({ElementType.TYPE, ElementType.PACKAGE}) @Retention(value = RetentionPolicy.RUNTIME) public @interface ParentPackage { /** * @return The parent package. */ String value(); }@Namesapce 相当于 xml中的 namespace=“/”
和上面的ParentPackage大致相同
@Action value的意思是你对应的login 相当与name = login
@Result也类型 xml中的name,location相当于result中指定的页面的url
运行 一下看看结果:
404 没有找到页面
/sa/WEB-INF/content/success.jsp 这个位置的页面没有找到
好吧! 先不管什么原因,先在web-inf中建立content并拷贝jsp放入文件夹中!再次运行,可以得到页面了!
为什么会再那里呢?
1.问题一:默认结果路径
查看bowser中的默认配置常量
struts.convention.result.path : /WEB-INF/content/
默认的结果路径是这里 想改变可以有几种方法
1.这个可以通过在struts.xml中覆盖它,
2.可以修改源文件,
3.在location的路径前面加上绝对路径"/".
经过尝试 这几种方法都是可行的!
2.问题二:都是什么样的包注释会主动解析
上面的列子会主动解析的
但是换了包名的话:例如 www; 试一试 错误了
struts.convention.package.locators=action,actions,struts,struts2
这里说包里面要是包含了这4个字符串 就会被搜索匹配到!至于修改方式 可以参考上面问题的前两种!
晚上搞搞哪个Action的详细配置试试!呆着也是呆着!
本文介绍了Struts2中Action的注解配置方法,包括@ParentPackage、@Namespace、@Action和@Result的使用。在配置过程中,遇到404错误,通过在WEB-INF/content目录下创建jsp页面解决问题。还探讨了Struts2的默认结果路径及如何更改,以及哪些包名会被自动解析为Action配置。最后提到了包注释匹配的规则,并计划进一步研究Action的详细配置。



5万+

被折叠的 条评论
为什么被折叠?



