1、property

<s:property value="username" /> 一般访问,访问ValueStack中的第一个username

<s:property value="'username'"/> property取值为字符串,要显示字符串就加单引号

<s:property value="admin" default="管理员"/> 首先回去ValueStack中去找admin,没找到就默认显示管理员。

<s:property value="'<hr/>'" escape="true" /> 要在网页显示纯文本的 <hr/>,escape要设置成false,escape默认就是false,为true就不是纯文本。

2、set

<s:set var="adminName" value="username"/> set 设定adminName值(默认为request 和 ActionContext)

<s:property value="#request.adminName"/> 从request取值,但是如果在下面打一个 s:debug 在request中看不到adminName,原因可能是adminName还没来得及写入debug中,实际能获取到,那就是有;

<s:property value="#adminName"/> 从ActionContext取值

  scope属性:application、session、request、page 和 action(默认)。

设置范围为page,并从page取值:

<s:set name="adminPassword" value="password" scope="page"/> <%=pageContext.getAttribute("adminPassword") %>

不过上面的 name 属性在 2.1 以后已经过时了,一般用下面的方式:

<s:set var="adminPassword" value="password" scope="session"/>

scope 设定了哪个范围,就往哪个范围去取值就行了,尽管测试可以发现,有时候在其他范围有时也能拿到对应的值,但并不是最佳实践。

action范围:  <s:property value="#adminPassword"/>

request范围:  <s:property value="#request.adminPassword"/>

session范围:  <s:property value="#session.adminPassword"/>

application范围:  <s:property value="#application.adminPassword"/>

page范围:  <%=pageContext.getAttribute("adminPassword") %>

什么时候会用set标签:对变量进行重命名的时候,长名字换短名字、循环会用。

3、bean

 <s:bean name="com.bjsxt.struts2.tags.Dog" var="mydog">
<s:param name="name" value="'oudy'"></s:param>
</s:bean>
<s:property value="#mydog.name"/>

给属性赋值:name="类的属性"、value="'字符串'",value要赋值字符串要加单引号。

取值:new出的对象mydog存在于ActionContext中, <s:property value="#mydog.name"/> 就可取到。

4、include (2.1版本会有中文问题)

     include _include1.html 包含静态英文文件
<s:include value="/_include1.html"></s:include> include _include2.html 包含静态中文文件
<s:include value="/_include2.html"></s:include> include _include1.html 包含静态英文文件,说明%用法
<s:set var="incPage" value="%{'/_include1.html'}"></s:set>
<s:include value="%{#incPage}"></s:include>

%{字符串},强制将字符串变为OGNL表达式,上一行的例子: %{#incPage} 。

5、fielderror

action 中设置 fielderror:

 public String execute(){
this.addFieldError("fielderror.test", "wrong");
return SUCCESS;
}

页面取值:

<s:fielderror name="fielderror.test" theme="simple"/>

===================================================================================

Struts 2 控制标签

6、if elseif else

先发送一个请求:

取出第一个值:

<s:set var="age" value="#parameters.age[0]">

进行判断:

 <s:if test="#age < 0">wrong age!</s:if>
<s:elseif test="#age < 20">to young!</s:elseif>
<s:else>yeah!</s:else>

如上图,显示结果为 too young!

判断单个值:

<s:if test="#parameters.aaa == null">null</s:if> 为空就显示null。

7、iterator 遍历集合

遍历简单集合:

 <s:iterator value="{1,2,3}">
<s:property /> |
</s:iterator>

OGNL 表达式中 {} 代表一个集合,遍历后的结果:

自定义变量:

 <li>自定义变量:<br>
<s:iterator value="{'aaa','bbb','ccc'}" var="x">
<s:property value="#x.toUpperCase()"/> |
</s:iterator>
</li>

使用status:

 <s:iterator value="{'aaa','bbb','ccc'}" status="status">
<s:property/> |
遍历过的元素总数:<s:property value="#status.count"/>
遍历过的元素索引:<s:property value="#status.index"/>
当前是偶数?:<s:property value="#status.even"/>
当前是奇数?:<s:property value="#status.odd"/>
是第一个元素吗?:<s:property value="#status.first"/>
是最后一个元素吗?:<s:property value="#status.last"/>
<br>
</s:iterator>

遍历map:

     <li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}">
<s:property value="key"/> | <s:property value="value"/><br>
</s:iterator>
</li>
<li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
<s:property value="#x.key"/> | <s:property value="#x.value"/><br>
</s:iterator>
</li>

Struts 的 UI标签,一般开发都是有美工和前台开发人员先把页面做好,如果再让程序员把这些代码转为Struts2的UI标签会比较麻烦,所以UI标签用的不多。这里不做记录。

Struts2 标签例子链接: http://pan.baidu.com/s/1pKIPN6r 密码: 5ht5

Struts2 UI theme 相关示例:

链接1: http://pan.baidu.com/s/1o8tzDbk 密码: dn49

链接2: http://pan.baidu.com/s/1c12rnoO 密码: fn2k

链接3: http://pan.baidu.com/s/1dF5npO9 密码: wwxd

链接4: http://pan.baidu.com/s/1jHAS0QU 密码: ua4u

Struts2_Struts标签的更多相关文章

  1. Struts2_Struts标签大致内容

    Struts-Tags1.通用标签 a) property b) set i.默认为 action scope,会将值放入 request 和 ActionContext中 ii. page.requ ...

  2. a标签点击跳转失效--IE6、7的奇葩bug

    一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...

  3. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  4. 百度MIP页规范详解 —— canonical标签

    百度MIP的规范要求必须添加强制性标签canonical,不然MIP校验工具会报错: 强制性标签<link rel="/^(canonical)$/"> 缺失或错误 这 ...

  5. 【CSS进阶】伪元素的妙用--单标签之美

    最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值 ...

  6. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  7. 最新 去掉 Chrome 新标签页的8个缩略图

    chrome的新标签页的8个缩略图实在让人不爽,网上找了一些去掉这个略缩图的方法,其中很多已经失效.不过其中一个插件虽然按照原来的方法已经不能用了,但是稍微变通一下仍然是可以用的(本方法于2017.1 ...

  8. css-父标签中的子标签默认位置

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  9. xpath提取多个标签下的text

    title: xpath提取多个标签下的text author: 青南 date: 2015-01-17 16:01:07 categories: [Python] tags: [xpath,Pyth ...

随机推荐

  1. 禁止百度转码和百度快照缓存的META声明

    今天手机 site 中国博客联盟时,发现网被转码了,虽然这个网站没做移动站,但是我也不希望被百度转码,因为这相当于拦截了所有来自手机的流量.下面说一下禁止百度转码和禁止百度快照缓存的方法. 一.禁止百 ...

  2. IP 分段 子网掩码

    子网掩码分网段 例如 200台机器分成4个子网 [ ip 段 ] 200台机器,4个子网,那么就是每个子网50台机器,设定为192.168.10.0,C类的IP,大子网掩码应为255.255.255. ...

  3. day33 GIL锁 线程队列 线程池

    1.    全局解释器锁GIL Python代码的执行由Python虚拟机(也叫解释器主循环)来控制.Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行.虽然 Python 解释器中可 ...

  4. js最后深入总结

    js常用事件: click  #点击事件 hover #鼠标漂浮事件,,鼠标移到上面就触发事件 blur  #失去焦点就触发事件,多用于文本框操作 focus  #获得焦点就触发事件, change ...

  5. rhcs红帽插件及 轮循

    server1:yum install luci ricci -yecho westos | passwd -stdin  ricci/etc/init.d/ricci startchkconfig ...

  6. 内置函数_eval

    eval功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globals[, locals]]) -> value 参数说明: expression ...

  7. Python-Anaconda练习candy算子用于边缘提取,再用hough变换检测直线边缘

    img: 待检测的图像. threshold: 阈值,可先项,默认为10 line_length: 检测的最短线条长度,默认为50 line_gap: 线条间的最大间隙.增大这个值可以合并破碎的线条. ...

  8. /etc目录下重要的目录和文件

    牢记: 1.*/etc/sysconfig/network-scripts/ifcfg-eth0  网卡的配置信息 重启网卡:1)/etc/init.d/network restart(所有网卡)   ...

  9. java——数组栈 ArrayStack

    栈的应用: undo操作-编辑器 系统调用栈-操作系统 括号匹配-编译器 以下是动态数组实现的数组栈: 定义动态数组: package Date_pacage; public class Array& ...

  10. Android NDK开发 字符串(四)

    几个概念首先要明确: java内部是使用16bit的unicode编码(UTF-16)来表示字符串的,无论中文英文都是2字节: jni内部是使用UTF-8编码来表示字符串的,UTF-8是变长编码的un ...