在Struts2注解配置之@Action(二)中对于结果页面我还是采用Convention Plugin的约定,但是这一节我需要利用@Results和@Result改变一下这种约定。以及@Results和@Result对类和方法进行注解后所产生的效果。
还是先看一段代码:
@Result(name = "failure", location = "/H5/fail.jsp") })注解。如果@Action(...)没有 results = { @Result(name = SUCCESS, location = "/H5/success.jsp"),
@Result(name = "failure", location = "/H5/fail.jsp") } ,那么依据Convention Plugin的约定,结果页面会是/H5/url.jsp。加上红色字体的部分后,execute()方法执行后,会根据红色字体的配置,将结果跳转到对应的页面。
日后再继续学习@Namespace。
还是先看一段代码:
- package com.example.actions;
- import org.apache.struts2.convention.annotation.Action;
- import org.apache.struts2.convention.annotation.Result;
- import org.apache.struts2.convention.annotation.Results;
- import com.opensymphony.xwork2.ActionSupport;
- @Results( { @Result(name = "global", location = "/global.jsp") })
- public class HelloWorld5 extends ActionSupport {
- @Action(value = "/H5/url", results = { @Result(name = SUCCESS, location = "/H5/success.jsp"),
- @Result(name = "failure", location = "/H5/fail.jsp") })
- public String execute() {
- if (System.currentTimeMillis() % 3 == 0) {
- return "failure";
- } else if (System.currentTimeMillis() % 3 == 1) {
- return SUCCESS;
- } else {
- return "global";
- }
- }
- @Action("globalTest")
- public String global() {
- return "global";
- }
- @Action(value = "globalOverWrite", results = { @Result(name = "global", location = "/H5/globalOverWrite.jsp") })
- public String globalOverWrite() {
- return "global";
- }
- }
- 使用@Result注解改变Convention Plugin的约定跳转页面。
@Result(name = "failure", location = "/H5/fail.jsp") })注解。如果@Action(...)没有 results = { @Result(name = SUCCESS, location = "/H5/success.jsp"),
@Result(name = "failure", location = "/H5/fail.jsp") } ,那么依据Convention Plugin的约定,结果页面会是/H5/url.jsp。加上红色字体的部分后,execute()方法执行后,会根据红色字体的配置,将结果跳转到对应的页面。
- 对Action类添加@Result注解,@Result将被Action类中的所有方法所共享。
- 对Action类中的方法添加@Result注解,@Result将只作用于被添加的方法。Action类方法上添加的@Result优先级高于Action类上添加的@Result。(前者覆盖后者)
日后再继续学习@Namespace。