在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。