最近学习 Struts 2.1 Tags 做了些笔记,贴出来大家一起学习下,希望大家多多交流。
index.jsp 代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.rao.bean.Sex"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
My page
Struts 2.1 Tags
一、控制标签
#、if /elseif/ else @用于逻辑判断
你是何方妖怪?
未成年人不能进入!
您已经成年!
您已经老了!
--------------------------------------------------------------
#、append @用于将多个集合合并
|
--------------------------------------------------------------
#、generator
generator标签,该标签可以将指定字符串按指定分隔符分割成多个字串。生成的多个字串可以用iterator标签进行迭代输出。可以这么理解:generator标签将一个字符串转换成一个List集合。在该标签体内,整个临时生成的集合将为Valuestack的顶端,但一旦该标签结束,生成的集合将被移除Valuestack。generator标签有如下几个属性:
1、count属性:指定生成集合中元素的总数。可选属性。
2、val属性:必填属性,指定被解析的字符串。
3、separator属性:这是一个必填属性,指定用于分割字符串的分隔符。
4、converter属性:可选属性,指定一个转换器,转换器负责将生成的集合中的每个字符串转换成对象,通过这个转换器可以将一个含有分隔符的字符串解析成对象的集合。转换器必须一个继承org.apache.struts2.util.IteratorGenerator.Converter的对象。
5、var属性,可选属性。如果指定了该属性,则将生成的集合保存在Stack Context中。如果不指定该属性,则将生成的集合放入ValueStack的顶端,该标签一结束,生成的集合就被移除。该属性也可替换成id。
--------------------------------------------------------------
#、iterator 用于迭代数据
索引
值
奇?
偶?
首?
尾?
当前迭代数量
pink">
--------------------------------------------------------------
#、merge @和类似:用于将多个集合合并
|
--------------------------------------------------------------
#、sort @用于排序
,
--------------------------------------------------------------
#、subset @用户截取集合中的子集; 注:decider:可选属性,指定由开发者自己决定是否选中该元素.
,
--------------------------------------------------------------
二、数据标签
#、action @用于导入一个Action
使用action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中. 使用action标签指定属性有:
id: 可选属性,作为该Action的引用ID
name:必选属性,指定调用Action
namespace:可选属性,指定该标签调用Action所属namespace
executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.
ignoreContextParam:可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,即传入参数.
s:param是以request方式的值的,而不是以参数传值,所以request.getParameter("")会获取不到值,通过request.getAttribute("")方式可以获取
--------------------------------------------------------------
#、bean @用于导入一个javaBean,相当于:jsp:useBean 标签
userId:
userName:
--------------------------------------------------------------
#、date @用于格式化日期
当期系统时间是:
--------------------------------------------------------------
#、debug @用于调试程序,让开发人员一目了然的知道当前请求、值栈、栈中的各项参数
--------------------------------------------------------------
#、i18n @用于访问国际化资源文件的内容
1.默认访问全局范围内的资源文件;
三毛
学习
2.访问包范围内的资源文件;
三毛
学习
3.访问Action范围内的资源文件;
三毛
学习
--------------------------------------------------------------
#、include @用于导入一个jsp文件,等同于:jsp:include标签
--------------------------------------------------------------
#、param @用于给指定参数设置值
userId:
userName:
--------------------------------------------------------------
#、property @输出结果,很像EL表达式,但是可以依托于OGNL表带是很强大
同上
--------------------------------------------------------------
#、push @该标签可以把程序员在ActionContext中引用的对像压入valuestack中,为以后访问对象提供了方便
--------------------------------------------------------------
#、set @用户声明对象或属性
,你好啊!
--------------------------------------------------------------
#、text @用户获取国际化资源文件的内容
请参考 il8n标签
--------------------------------------------------------------
#、url @用于组拼一个请求路径
注意:
value以字符处理:
value明确指定以ognl表达式处理:
--------------------------------------------------------------
三、UI标签
#、checkboxlist @复选框列表
1> .list 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
name:checkboxlist的名字
list:checkboxlist要显示的列表
value:checkboxlist默认被选中的选项,checked=checked
2> .Map 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
name:checkboxlist的名字
list:checkboxlist要显示的列表
listKey:checkbox 的value的值
listValue:checkbox 的lablel(显示的值)
value:checkboxlist默认被选中的选项,checked=checked
--------------------------------------------------------------
#、combobox
--------------------------------------------------------------
#、radio @单选框
<%
Sex sex1 = new Sex(1,"男");
Sex sex2 = new Sex(2,"女");
List list = new ArrayList();
list.add(sex1);
list.add(sex2);
request.setAttribute("sexs",list);
%>
这个与checkboxlist差不多;
1>.如果集合为javabean:
2>.如果集合为list:
3>.如果集合为map:
--------------------------------------------------------------
#、select @下拉列表框
这个与s:checkboxlist差不多;
1>.如果集合为javabean:
2>.如果集合为list:
3>.如果集合为map:
--------------------------------------------------------------
#、doubleselect @级联菜单
--------------------------------------------------------------
#、optiontransferselect
--------------------------------------------------------------
#、updownselect @可上下选择的select
--------------------------------------------------------------
#、sx:datetimepicker @日期选择控件
使用步骤:声明:我这里用的是strut 2.1.8.1,在struts2.0的版本中可能有所不同;
1.导入struts2-dojo-plugin-2.1.8.1.jar DoJo 插件包;
2. 导入标签:<%--@ taglib prefix="sx" uri="/struts-dojo-tags"--%>;
3.在需要使用的页面中的head标签之间加上<%-- --%>;
--------------------------------------------------------------
#、sx:tabbedpanel @选项卡控件
声明:这个标签代码转至:http://blog.sina.com.cn/s/blog_6145ed810100ecud.html,版权归作者所有;写的挺好拿来大家共同学习。
最简单的选项卡:
Local Tab 1
Local Tab 2
加载其他页面的选项卡:
Remote Tab 1
Remote Tab 1
设置选项卡底下的内容懒加载,即等需要的时候再加载,使用属性preload="false":
Remote Tab 1
Remote Tab 1
固定大小的选项卡,使用属性cssStyle和doLayout:
Local Tab 1
Local Tab 2
每次点击选项卡时都重新刷新内容,使用属性refreshOnShow:
Remote Tab 1
Remote Tab 2
使得其中一个选项卡失效:
Local Tab 1
Local Tab 2
设置选项卡在底部显示 (可以是: top, right, bottom, left):
Local Tab 1
Local Tab 2
设置选项卡允许关闭,使用属性closeable:
Local Tab 1
Local Tab 2
--------------------------------------------------------------
#、sx:textarea @textarea控件
--------------------------------------------------------------
#、sx:tree @树控件
struts.xml 代码:
/success.jsp
TagsAction1.java 代码:
package com.rao.action;
import com.opensymphony.xwork2.ActionSupport;
public class TagsAction1 extends ActionSupport {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
GlobalNativeAction.java
package com.rao.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 演示的是在Action 中获取国际化资源文件中的内容
* @author Administrator
*
*/
public class GlobalNativeAction extends ActionSupport {
@Override
public String execute() throws Exception {
//不带有占位符的获取方法
//ActionContext.getContext().put("message", this.getText("welcome"));
//带有占位符的获取方法
ActionContext.getContext().put("message", this.getText("welcome",new String[]{"raozhiyong","study"}));
return "message";
}
}
struts2_zh_CN.properties
welcome | 全局范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!! |
GlobalNativeAction_zh_CN.properties
welcome | Action范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!! |
package_zh_CN.properties
welcome | package范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!! |
Sex.java
Java代码
package com.rao.bean;
public class Sex {
private int id;
private String name;
public Sex(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
UserBean.java
package com.rao.bean;
import java.io.Serializable;
public class UserBean implements Serializable{
private static final long serialVersionUID = 1L;
public UserBean() {}
private Integer userId;
private String userName;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
MyComparator.java
package com.rao.comparator;
import java.util.Comparator;
public class MyComparator implements Comparator {
public int compare(Integer o1, Integer o2) {
int c = o1.compareTo(o2);
return c;//可以完成顺序排序
//return -c;//可以完成倒序排序
}
}