您的位置:首页 > 编程语言 > Java开发

Struts2(七)global-results 和 extends 和动态结果集详解

2016-12-28 22:35 447 查看

一、global-results

解析:根据字面意思可以看出这个标签的作用,该标签的中文意译叫做”全局结果集“;当一个大的项目开发中,项目经理就安排任务成几个模块进行开发,其中有限页面是共同的,也就说Action返回的值是一样的,这样子的话就不用每个模块都进行相同的配置了,不仅仅体现出编码的整体性,也减少了代码的冗余性,这时候我们就可以定义一个共同的包来放置相同的配置了。



1、struts.xml 的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<!-- <include file="login.xml"/> -->
<!--  <constant name="struts.enable.DynamicMethodInvocation" value="false" /> -->
<!-- 设置为开发者模式  修改之后不需要重启服务器 -->
<constant name="struts.devMode" value="false" />

<!-- 全局配置的结果集 -->
<package name="user" namespace="/user" extends="struts-default">
<global-results>
<result name="mainPage">/jsp/mainPage.jsp</result>
</global-results>

<action name="user" class="com.flx.actions.UserAction" method="testUser">
<result name="page1">/jsp/page1.jsp</result>
<result name="page2">/jsp/page2.jsp</result>
</action>
</package>
<!--使用到了继承-->
<package name="user1" namespace="/user1" extends="user">
<action name="user1" class="com.flx.actions.UserAction1" method="testUser">
<result name="page11">/jsp/page1.jsp</result>
<result name="page22">/jsp/page2.jsp</result>
</action>
</package>
 
<!-- 动态结果集 -->
<package name="user3" namespace="/user3" extends="struts-default">
<action name="user3" class="com.flx.actions.UserAction3" method="testUser">
<result >${resultType}</result>
</action>
</package>

</struts>

2、JSP 【hello.jsp】页面



<h2>(5)全局结果值demo</h2>
1、<a href="<%=path %>/user/user?type=1">返回有映射的页面1</a>   
2、<a href="<%=path %>/user/user?type=2">返回有映射的页面2</a>   
3、<a href="<%=path %>/user/user?type=3">全局结果值返回页面</a>   
3、<a href="<%=path %>/user/user1?type=4">全局结果值返回页面</a>   

3、Action处理类

package com.flx.actions;

import com.opensymphony.xwork2.ActionSupport;

/**
*
* @author FuLX
*
* @2016-12-28下午8:59:21
*
* 功能:全局结果集 案例寿命
*/
public class UserAction extends ActionSupport {

private static final String FINAL_FLX_PAGE_01 = "page1";
private static final String FINAL_FLX_PAGE_02 = "page2";
private static final String FINAL_FLX_PAGE_03 = "mainPage";

private int type;//页面进来的type值有:1、2、3、4

public String testUser() {
//条件值为1时候跳转页面
if (this.type == 1) {
System.out.println("页面1");
return FINAL_FLX_PAGE_01;
//条件值为2时候跳转页面
} else if (this.type == 2) {
System.out.println("页面2");
return FINAL_FLX_PAGE_02;
//条件值都不符合跳转页面
} else {
System.out.println("其他页面");
return FINAL_FLX_PAGE_03;
}
}

public int getType() {
return type;
}

public void setType(int type) {
this.type = type;
}

}


4、结果说明

4.1:用户选择【返回有映射的页面1】,回调转到page1.jsp页面,因为Action返回值在result中是有的。

4.2:用户选择【返回有映射的页面2】,回调转到page2jsp页面,因为Action返回值在result中是有的。

4.1:用户选择【全局结果值返回页面】,回调转到page1.jsp页面,因为Action返回值在result中是有的。

4.1:用户选择【全局结果值返回页面】,因为Action返回值是mainPage,因为Action返回值在result中是没有的,有因为”user“包中有配置 global-results 标签;所以会跳到mainPage.jspy页面去。

二、extends 标签中属性的讲解

解答:就是在两个package中 默认是extends="struts-default",但是如果其中一个package想继承另外一个package时候,例如向继承name=''user"的package;就可以这样书写”extends="user"“;这样就会继承名字为”user“的package。注意:因为struts-defanlt配置文件非常复杂,这不需要我们去管理,是复杂但是用起来比较简单。

三、动态结果集

package com.flx.actions;

import com.opensymphony.xwork2.ActionSupport;

/**
*
* @author FuLX
*
* @2016-12-28下午8:59:21
*
* 功能:全局结果集 案例寿命
*/
public class UserAction3 extends ActionSupport {

private static final String FINAL_FLX_PAGE_01 = "/jsp/page1.jsp";
private static final String FINAL_FLX_PAGE_02 = "/jsp/page2.jsp";
private int type;

private String resultType;

public String testUser() {
if (this.type == 1) {
System.out.println("页面1");
this.resultType = FINAL_FLX_PAGE_01;

} else {
System.out.println("页面2");
this.resultType = FINAL_FLX_PAGE_02;
}
return "success";
}

public int getType() {
return type;
}

public void setType(int type) {
this.type = type;
}

public String getResultType() {
return resultType;
}

public void setResultType(String resultType) {
this.resultType = resultType;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: