文档介绍:第6章 Struts2的View组件
MVC中视图(View)也是一个非常重要的因素,尤其在Web应用开发里,网页的开发在总工作量的比重非常大。Struts2 在视图方面提供了强大的支持。主要包括3个方面:提供了丰富的标签库资源、对解释语言支持和对模板的支持。在Struts2中可以以很少量的代码实现复杂的网页,而且代码的重用率大幅度提高。
EL简介
EL 全名为Expression Language,它原本是JSTL为方便存取数据所自定义的语言。(JSTL是JSP Standard Tag Library的缩写,翻译为JSP标准标签库),当时EL只能在JSTL标签中使用,到了JSP 之后,EL已经正式纳入成为标准规范之一。因此,只要是支持Servlet / 的Container,就都可以在JSP网页中直接使用EL了。使用方法如:
<p>Hi ! ${ username }</p>
EL语法
EL 语法很简单,它最大的特点就是使用方便。所有EL都是以“${”为起始、以“}”为结尾的,如:
${}
上述EL范例的意思是:从Session的范围中,取得用户的性别。假若依照之前JSP Scriptlet的写法如下:
<%
User user = (User)("user");
String sex = ( );
%>
EL 变量
EL存取变量数据的方法很简单,例如:
${username}
它的意思是取出某一范围中名称为username的变量。因为并没有指定哪一个范围的username,所以它的默认值会先从Page范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
自动转变类型
EL 除了提供方便存取变量的语法之外,它另外一个方便的功能就是:自动转变类型,来看下面这个例子,把页面传来的参数count加20。
${ + 20}
假若窗体传来count的值为10时,那么上面的结果为30。在JSP中获取用户输入,再从窗体所传来的参数值,包括链接中的参数值它们的类型一律是String,所以当接收之后,必须再将它转为其他类型,如:int、float 等等,然后才能执行一些数学运算。
EL 隐含对象(内置对象)
本书曾经介绍过9个JSP 隐含对象,而EL本身也有自己的隐含对象,这些隐含对象往往给开发人员带来极大的便利。EL 隐含对象总共有11 个,
EL保留字
EL 的保留字如表,所谓保留字的意思是指变量在命名时,应该避开上述的名字,以免程序编译时发生错误。
使用通用标签
Struts2的标签库与先取版本有很大进步,不再仅依赖于JSP标签,还包括FreeMarker和Velocity。标签可以分为两类:通用标签和UI标签(也称为HTML标签)。在使用的时候与使用JSP自定义标签相同第一步就是要导入标签库,Struts2的引用方法简单如下:
<%@ taglib prefix="s" uri="/struts-tags"%>
,标签库是分离的要分别导入。
<%@ taglib uri=“struts-” prefix=“html”%>
<%@ taglib uri=“struts-”prefix=“bean”%>
<%@ taglib uri=“struts-”prefix=“logic”%>
标签语法
Struts2的标签语法非常容易理解,所有的属性最初都是被设置为字符串的,然后它们会解析%{ }语法,任何大括号之间的内容都会基于value stack求值。注意3个规范:
(1)所有String类型属性的都会解析%{ } 中间的字符。
(2)所有非字符串类型属性都不会解析,但是会直接被当作一个OGNL表达式求值。
(3)对第二个规则的例外情况是如果非字符串属性以“%{”开始并以“} ”结束, 这些字符在对表达式求值之前会被截取出来。
控制标签(Control Tags)
控制标签提供操纵集合以及有条件的生成内容的功能,,但使用方法简单的许多,它包括9个标签。
(1)if、else if、else属于条件控制标签,用来控制内容生成与否,这3个标签经常一起使用,使用方法与编程语言中的用法很类似。(2)