5. Struts2标签与主题

1.Struts标签

  • Struts2中定义一组新的标签库,使用struts的标签库和JSTL类似。
  • Struts2标签需要结合OGNL表达式一起使用,注意Struts2中对EL支持不太好。
  • 使用Struts标签库需要先导库:<%@ taglib prefix="s" uri="/struts-tags" %>

2. 通用标签

1. property 标签
* **`property`** 标签可以输出对象栈中对象的属性,或者 map栈中的对象,**`value属性中的值,会被OGNL解析`**
  • 示例:















<%  request.removeAttribute("username"); %>



2. url 标签
*       • url 标签用来动态地创建一个 URL(`action、includeParams、method、nameSpace、value、var`)
3. param 标签
  • param 标签用来把一个参数传递给包含着它的那个标签
    * name 参数名称
    * value 参数值
  • 无论在给出 value 值时有没有使用 %{}, Struts 都会对它进行 ognl 求值
  • 如果想传递一个 String 类型的字符串作为参数值, 必须把它用单引号括起来.
  • 可以把 value 属性的值写在开始标签和结束标签之间. 利用这种方式来传递一个 EL 表达式的值




${indexURL }



${addURL }
4. set 标签
  • set 标签用来在以下 Map 对象里创建一个键值对:
    * ValueStack 值栈的 ContextMap 值栈
    * Map 类型的 session 对象
    * Map 类型的 application 对象
    * Map 类型的 request 对象
    * Map 类型的 page 对象






属性: ${request.setTag }
5. push 标签
* push 标签的功能和 set 标签类似.
* push 标签将把一个**对象压入 ValueStack 而不是压入 ContextMap.** 
* push 标签在**标签起始时把一个对象压入栈, 标签结束时将对象弹出栈**.
<%
    User user =  new User("这是使用push 标签压入栈顶的值");
    request.setAttribute("user", user);
%>

    push栈顶的值: ${username }
出了push标签,栈顶对象就被弹出:
6. if, else 和 elseif 标签
  • 这三个标签用来进行条件测试, 它们的用途和用法类似于 if, else 和 elseif 关键字. 其中 if 和 elseif 必须有 test 属性


    

你还是个小毛孩!

你是一个精壮的汉子!

你已经是个老家伙了!

7. iterator 标签
  • iterator 标签用来遍历一个集合,value属性指向的一个集合,它会被ONGL解析
  • iterator 标签会将集合中的每个元素,分别放入值栈的栈顶,我们可以直接通过属性名来读取集合
  • status 属性可以获取到一个遍历状态的对象
    * even 是否是一个偶数行
    * odd 是否是一个奇数行
    * index 获取当前元素的索引
    * count 获取当前元素的数量
<%
    List cities = new ArrayList();
    
    cities.add(new City(2,"上海"));
    cities.add(new City(3,"广州"));
    cities.add(new City(5,"东莞"));
    cities.add(new City(4,"深圳"));
    cities.add(new City(1,"北京"));

    request.setAttribute("cities", cities);
%>




    ${st } --  ${st.even }--${st.index} --${st.count } -- ${id } - ${name } 
8. sort 标签
  • sort 标签用来对一个可遍历对象里的元素进行排序.
public class CityComparator implements Comparator {
    @Override
    public int compare(City o1, City o2) {
        return o1.getId().compareTo(o2.getId());
    }
}

    ${id } - ${name } 


<% CityComparator comparator = new CityComparator(); request.setAttribute("comparator", comparator); %> ${id } - ${name }
9. date 标签
  • date 标签用来对 Date 对象进行排版

    *
    5. Struts2标签与主题_第1张图片

    * • format 属性的值必须是 java.text.SimpleDateFormat 类里定义的日期/时间格式之一.
<%
    Date date = new Date();
    session.setAttribute("date", date);
%>
s:date 标签用来对 Date 对象进行排版



date: ${date2 }[站外图片上传中……(2)]
10. a 标签
    • a 标签将呈现为一个 HTML 连接. 这个标签可以接受 HTML 语言中的 a 元素所能接受的所有属性. 

超链接1



超链接1

3. Form 表单标签

  • 表单标签将在 HTML 文档里被呈现为一个表单元素
  • 使用表单标签的优点:
    • 表单回显
    • 对页面进行布局和排版
  • 标签的属性可以被赋值为一个静态的值或一个 OGNL 表达式. 如果在赋值时使用了一个 OGNL 表达式并把它用 %{} 括起来, 这个表达式将会被求值.




    
    

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        
        
        
    
    
    
    
    
    
    
    
    


4. 主题

  • 默认情况下, form 标签将呈现为一个 HTML form 元素和一个 table 元素.
    • 每一种输入标签都将呈现为一个带标号的输入元素, 而这个输入元素将被包含在一个 tr 元素和 td 元素的内部
  • 主题
    • 主题: 为了让所有的 UI 标签能够产生同样的视觉效果而归集到一起的一组模板. 即风格相近的模板被打包为一个主题
      • simple: 把 UI 标签翻译成最简单的 HTML 对应元素, 而且会忽视行标属性
      • xhtml: xhtml 是默认的主题. 这个主题的模板通过使用一个布局表格提供了一种自动化的排版机制.
      • css_xhtml: 这个主题里的模板与 xhtml 主题里的模板很相似, 但它们将使用 css 来进行布局和排版
      • ajax: 这个主题里的模板以 xhtml 主题里德模板为基础, 但增加了一些 Ajax 功能.
  • 修改主题:
    • 通过 UI 标签的 theme 属性
    • 在一个表单里, 若没有给出某个 UI 标签的 theme 属性, 它将使用这个表单的主题
    • page, request, session 或 application 中添加一个 theme 属性
    • 可以在struts.xml文件通过修改常量的方式来配置,会修改整个项目的默认主题。

你可能感兴趣的:(5. Struts2标签与主题)