Struts2 的 Result
2011-02-06 09:46
190 查看
Result 的常见类型:
dispatcher
相当于 JSP 中的 标签,在服务器端执行跳转。
redirect
很显然的相当于 response.sendRedirect(String url);。
chain
这个与 dispatcher 相似,不过 chain 只能跳转到另一个 action ,而 dispatcher 只能跳转到其他 JSP、Html 页面。
redirectAction
见名知义,不解释。
全局 Result:
定义全局 Result 的好处是,我们可以在任意 action 之要返回相同的字符串,如 haha,都可以定位到全局 Result ,而不需要一一指明。
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
注意,全局 Result 必须定义在一个包里,即一个 package 标签下。假设我们刚才定义的全局 action 是在名为 wawa 的包里。
定义的全局 Result 默认仅作用于当前 package ,如果想在其他包中使用这个全局 Result ,就得让其他的包继承定义了全局 Result 的包:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
动态结果集:
我们还可以在 Action 中指定 Result 标签的值:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
然后 dynamicResult 就会被当做参数进值栈信息,我们在 struts.xml 中访问值栈信息就可以得到正确的访问页面了:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
因为我们可以通过 ${} 在 struts.xml 中去值栈里面的参数,所以我们可以利用这一特性,向 result 指定的页面传入参数,在 struts.xml 中这一配置:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
然后在 Test_add_success 里面调用熟悉的 request.getParameter() 方法实现参数的取值。还可以通过 取值。
当然,我们也可以利用动态结果集设定 dynamicResult 的值来实现这一过程。
只有在 redirect 的时候需要传递参数,dispatcher 是默认共用一个 request 的,也就是不用手工实现传递参数。
dispatcher
相当于 JSP 中的 标签,在服务器端执行跳转。
redirect
很显然的相当于 response.sendRedirect(String url);。
chain
这个与 dispatcher 相似,不过 chain 只能跳转到另一个 action ,而 dispatcher 只能跳转到其他 JSP、Html 页面。
redirectAction
见名知义,不解释。
全局 Result:
定义全局 Result 的好处是,我们可以在任意 action 之要返回相同的字符串,如 haha,都可以定位到全局 Result ,而不需要一一指明。
1:
2:/Test_add_success.jsp
3:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
注意,全局 Result 必须定义在一个包里,即一个 package 标签下。假设我们刚才定义的全局 action 是在名为 wawa 的包里。
定义的全局 Result 默认仅作用于当前 package ,如果想在其他包中使用这个全局 Result ,就得让其他的包继承定义了全局 Result 的包:
1:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
动态结果集:
我们还可以在 Action 中指定 Result 标签的值:
1: package com.cdp.struts2;
2:
3: import com.opensymphony.xwork2.ActionSupport;
4:
5: public class TestAction extends ActionSupport {
6:
7: private String param = "";
8: private String dynamicResult;
9:
10: //Getters and Setters Omitted Here...
11:
12: public String execute() {
13: if (param.equals("1")) {
14: dynamicResult = "/Test_add_success.jsp";
15: } else {
16: dynamicResult = "/Test_add_error.jsp";
17: }
18: return SUCCESS;
19: }
20:
21: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
然后 dynamicResult 就会被当做参数进值栈信息,我们在 struts.xml 中访问值栈信息就可以得到正确的访问页面了:
1:
2:${dynamicResult}
3:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
因为我们可以通过 ${} 在 struts.xml 中去值栈里面的参数,所以我们可以利用这一特性,向 result 指定的页面传入参数,在 struts.xml 中这一配置:
1:
2:Test_add_success.jsp?param=${param}
3:
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
然后在 Test_add_success 里面调用熟悉的 request.getParameter() 方法实现参数的取值。还可以通过 取值。
当然,我们也可以利用动态结果集设定 dynamicResult 的值来实现这一过程。
只有在 redirect 的时候需要传递参数,dispatcher 是默认共用一个 request 的,也就是不用手工实现传递参数。
相关文章推荐
- struts2中的preresultlistner
- Struts2的配置文件中配置result时传中文参数的问题
- struts2 Could not find action or result
- struts2-resultType
- Struts2结果类型(Result Types)
- Struts2中 Result类型配置详解
- 扩展struts2的结果集StrutsResultSupport 自定义Result处理JSON
- 错误日志——The result type [org.apache.struts2.json.JSONResult] doesn't have a default param
- Struts2的cosntant和result
- Struts2 语法--result type
- Struts2_16_带参数的Result动态结果集
- struts2 ResultType为chain的使用
- Struts2中 Result类型配置详解
- Struts2 - result标签的param标签的name属性用法。
- Struts2学习笔记--使用Response下载文件和Struts2的StreamResult文件下载
- Struts2-7.Result配置
- Struts2总结之Action和Result
- struts2里的struts.xml中 当result的type="stream"
- Struts2官方文档之Result Types (文章摘自Struts2 官方文档,以备以后查看)
- Struts2 Result配置详解