17xie > Struts 2权威指南 > 2.6 改进视图组件
背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-100699.html    注册17xie 一起来写书 实现您的出书梦想!

2.6  改进视图组件

通过前面的几节的介绍,我们已经明白了Struts 2 MVC框架的基本数据流,已经完成了Struts 2应用中模型、控制器、视图3个组件的开发。但应用中的视图组件:JSP页面非常丑陋,特别是输出Action返回信息的JSP页面,使用了大量的Java脚本来控制输出,下面将会使用Struts 2的标签来改善整个应用视图组件。

2.6.1  改善输出页面

为了控制输出Struts 2的ValueStack中封装的值,Struts 2提供了大量的标签。其中比较常用的标签有:

—  if:该标签支持标签体,如果if标签里判断的表达式返回真,则输出标签体内容。

—  else:该标签不能独立使用,它需要与if标签结合使用,如果if标签内判断的表达式返回假,则输出该标签里的标签体。

—  iterator:主要用于迭代输出某个集合属性的各个集合元素。

—  property:该标签用于输出指定属性值。

关于Struts 2标签库更深入的使用,第10章还会深入介绍,故此处不再详细讲解。通过使用上面的几个标签,替换showBook.jsp页面中的Java脚本,修改后的showBook.jsp页面代码如下:

<%@ page language="java" contentType="text/html; charset=GBK" %>

<!-- 导入Struts 2的标签库 -->

<%@taglib prefix="s" uri="/struts-tags"%>

    <head>

        <title>作者李刚的图书</title>

    </head>

   

                                 <table border="1" width="360">

                                 <caption>作者李刚的图书</caption>

                                 <!-- 迭代输出ValueStack中的books对象,其中status是迭代的序号 -->

                                 <s:iterator value="books" status="index">

                                 <!-- 判断序号是否为奇数 -->

                                 <s:if test="#index.odd == true">

                                     <tr style="background-color:#cccccc">

                                  </s:if>

                                 <!-- 判断迭代元素的序号是否不为偶数 -->

                                  <s:else>

                                  <tr>

     </s:else>

                                    <td>书名:</td>

                                    <td><s:property/></td>

                                 </tr>

                                 </s:iterator>

                                 </table>

   

上面的JSP页面使用了Struts 2的标签库,因此必须在JSP页面的首部添加taglib指令,该taglib指令用于导入标签库。

 提示  如果需要使用某个标签库中的标签,则必须在页面的开始导入该标签库。

页面中使用Struts 2的iterator标签迭代输出ValueStack中的books数组,并为每个数组元素定义了一个序号:index。通过判断序号是否为奇数,如果行序号为奇数,则输出一个有背景色的表格行;否则输出一个无背景色的表格行。

在浏览器中再次向getBooks.action发送请求(发送请求之前,必须先登录本系统),将看到如图2.6所示的界面。

图2.6  使用Struts 2标签改善后的输出界面

上面页面的输出效果与图2.5并没有太大的不同,只是使用不同颜色来分隔了记录行。这也得益于Struts 2标签库的简洁。

关键在于2.5.4节中的JSP页面代码与本节页面代码的差异:前面JSP页面使用了大量的Java脚本,让整个页面的代码看起来非常凌乱,降低了可阅读性、可维护性。但本页面中仅使用Struts 2脚本控制输出,完全消除了页面中的Java脚本,降低了该页面的后期维护成本。

2.6.2  使用UI标签简化表单页面

前面已经提到过,Struts 2的一个重要组件就是标签库。Struts 2标签库中不仅提供了前面所示的基本控制、数据输出等功能,还提供了非常丰富的UI组件,除了提供系列的主题相关标签外,还提供了一系列的表单相关的标签。

Struts 2为常用表单域都提供了对应的标签,下面是常用的表单域标签。

—  form:对应一个表单元素。

—  checkbox:对应一个复选框元素。

—  password:对应一个密码输入框。

—  radio:对应一个单选框元素。

—  reset:对应一个重设按钮。

—  select:对应一个下拉列表框。

—  submit:对应一个提交按钮。

—  textarea:对应一个多行文本域。

—  textfield:对应一个单行文本框。

关于这些界面相关的标签,同样将在第10章详细介绍。下面将使用Struts 2的表单相关标签简化用户登录的login.jsp页面,修改的login.jsp页面的代码如下:

<%@ page language="java" contentType="text/html; charset=GBK"%>

<%@taglib prefix="s" uri="/struts-tags"%>

<head>

<title>登录页面</title>

</head>

<!-- 使用form标签生成表单元素 -->

<s:form action="Login">

                                 <!-- 生成一个用户名文本输入框 -->

                                 <s:textfield name="username" label="用户名"/>

                                 <!-- 生成一个密码文本输入框 -->

                                 <s:textfield name="password" label="密  码"/>

                                 <!-- 生成一个提交按钮 -->

                                 <s:submit value="登录"/>

</s:form>

将该页面与前面的表单页面进行对比,我们发现该页面的代码简洁多了。因为使用了Struts 2的表单标签,定义表单页面也更加迅速。在浏览器中浏览该页面,看到如图2.7所示的界面。

图2.7  使用Struts 2表单标签后的表单页

当然,Struts 2的标签还有许多功能,此处先不详述,本书的第10章将会详细介绍Struts 2标签的用法。


字数:7468    最后更新:7个月以前 [04-22 11:05]happyskynet 修改
本页编辑者:happyskynet  
[前一页]:2.5 改进控制器  [后一页]:2.7 完成程序国际化
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号