struts2 UI标签

Struts2的UI标签

 1) 用途: 

 --生成框体(文本框、选择框)

 --自动回显数据(文本框显示值,选择框做默认勾选)

 --常用于修改功能中默认数据的显示

 2) 涉及的标签

 a,表单标签 b,文本框标签 c,密码框标签 d,单个值的复选框标签 e,提交按钮标签

 f,单选框标签 g,复选框标签 h,下拉选择标签

案例如下:

    ToUpdateAction.java 

public class ToUpdateAction {
	//input,由于是模拟的代码,不给输入了
	//output
	private Customer customer;
	private List<City> cities;
	
	public ToUpdateCustomerAction() {
		System.out.println("实例化Action...");
	}
	public String execute() {
		System.out.println("Action业务方法...");
		CustomerDAO dao = new CustomerDAO();
		customer = dao.findById();
		cities = dao.findAllCities();
		return "success";
	}
      // get/set方法省略

Customer.java

public class Customer {
	private String name; // 姓名
	private String password; // 密码
	private String desc; // 简介
	private String sex; // 性别
	private boolean marry; // 是否已婚
	private List<String> travelCities; // 去过的城市
	private String home; // 家乡
	
	private String loveCity; // 最喜欢的城市
       // .....
}

 City.java

public class City {
	private String code;
	private String name;
   //....
}

 update.jsp

<%@page pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head></head>
<body>
	<h1>演示Struts2的UI标签示例</h1>
	<!-- 1.生成表单标签 -->
	<s:form action="#" method="post">
		<!-- 
			2.文本框标签:
				a.生成文本框
				b.通过name中的OGNL表达式访问来源Action,
					并根据返回结果给该文本框赋值
		-->
		<s:textfield name="customer.name" label="姓名"/>
		
		<!-- 
			3.密码框标签	
				可以理解为特殊的文本框,用法同2
		 -->
		 <s:password name="customer.password" label="密码" showPassword="true"/>
		
		<!-- 
			4. 单个值的复选框标签
				a.生成一个checkbox
				b.根据name中的OGNL表达式,向来源
					Action取值,并根据取值的结果设置
					是否勾选此checkbox
				c.OGNL表达式访问的属性,应该是布尔类型
		-->
		<s:checkbox name="customer.marry" label="是否已婚" labelposition="left"/>
		
		<!-- 
			6.单选框标签
				a.通过list生成一组radio及对应的label,
					list可以指定一个Map,那么Map的key
					用于生成radio的value属性值,Map的
					value用于生成label显示值
				b.通过name的OGNL表达式,访问来源Action,
					将返回的值与radio的key匹配,哪个
					radio的key与返回值一致,则该radio
					会设置为选中的。
		 -->
		 <s:radio name="customer.sex" list="#{'M':'男','F':'女'}" label="性别"/>
		
		<!-- 
			7.复选框标签
				a.用法等同于6
				b.由于可以多选,那么name中OGNL表达式
					访问的属性应该是集合
		 -->
		<s:checkboxlist name="customer.travelCities" list="#{'beijing':'北京','shanghai':'上海','guangzhou':'广州','dongguan':'东莞','shenzhen':'深圳','diaoyudao':'钓鱼岛'}" label="去过的城市"/>
		<!-- 
			7.1复选框标签-动态初始化范围
				a.通过list的OGNL表达式,访问Action中的
					集合属性,返回的集合用于生成多个选项。
					listKey要指定集合对象中用于生成value
					值的属性名。
					listValue要指定集合对象中用于生成label
					显示值的属性名。
				b.通过name来默认勾选,用法同7
		 -->
		<s:checkboxlist name="customer.travelCities" list="cities" listKey="code" listValue="name" label="去过的城市2"/>
		
		<!-- 
			8.下拉选标签
				a.通过list生成选项option,其中Map的key
					用于生成option的value,Map的value
					用于生成option的显示值
				b.通过name中的OGNL表达式,访问来源
					Action,并将取到的是结果与option匹配,
					哪个option的value值与返回值一致,则将
					此option选中
		 -->
		 <s:select name="customer.home" list="#{'beijing':'北京','shanghai':'上海','guangzhou':'广州','dongguan':'东莞','shenzhen':'深圳','diaoyudao':'钓鱼岛'}" label="家乡" headerKey="-1" headerValue="请选择"/>
		 <!-- 
		 	8.1下拉选标签-动态初始化选项
		 		同7.1
		  -->
		 <s:select name="customer.home" list="cities" listKey="code" listValue="name" label="家乡2" headerKey="-1" headerValue="请选择"/>
		
		<!-- 5.提交按钮标签 -->
		<s:submit value="保存"/>
	</s:form>
</body>
</html>

 结果如下:



 

猜你喜欢

转载自lydia-fly.iteye.com/blog/2018382