struts2标签库

非UI标签:

if语句:

<h1>if标签</h1>
    <!-- 相当于java的赋值语句 -->
    <s:set var="age" value="17"></s:set>
    <s:if test="#age > 18">
    成年了!!
    </s:if>
    <s:elseif test="#age < 18">
    未成年!!
    </s:elseif>
    <s:else>
    刚刚好!!
    </s:else>

循环:

存储结构图


注意:

循环比较特殊,每次循环的对象的属性会被保存在值栈的顶部,
所以取数据的时候可以不用加#

s:property标记如果不指定value属性那么默认取值栈顶部的内容

status  遍历行的状态:

first  第一行

last  最后一汗

even  偶数行

odd   奇数行

h1>循环</h1>
    <s:iterator begin="1" end="10" step="1" status="st" var="i">
    <s:property value="#i"/> --- 
    <s:property value="i"/> ---
    <!-- 不推荐使用 -->
    <s:property/>
   
    <!-- st.first判断当前循环是否是第一行 -->
    <s:property value="#st.first"/> --- 
    <!-- st.last判断当前循环是否是最后一行 -->
    <s:property value="#st.last"/> --- 
    <!-- st.even判断当前循环是否是偶数行 -->
    <s:property value="#st.even"/> ---
    <!-- st.odd判断当前循环是否是奇数行 -->
    <s:property value="#st.odd"/> ---

普通循环:

<!-- 
  循环比较特殊,每次循环的对象的属性会被保存在值栈的顶部,
所以取数据的时候可以不用加#
     -->
 <s:iterator begin="1" end="10" step="1" status="st" var="i">
    <s:property value="#i"/> --- 
    <s:property value="i"/> ---
    <!-- 不推荐使用 -->
    <s:property/>

遍历集合:

public String query(){

userList = new ArrayList<User>();
userList.add(new User("黄飞鸿", "黄某人"));
userList.add(new User("钢铁侠", "罗伯特唐尼"));
userList.add(new User("雷神", "托尔"));
userList.add(new User("蜘蛛侠", "蜘蛛"));
userList.add(new User("葫芦娃", "葫芦小金刚"));

time = new Date();

return SUCCESS;
}

<!-- 
  循环比较特殊,每次循环的对象的属性会被保存在值栈的顶部,
所以取数据的时候可以不用加#
     -->
    <s:iterator value="userList" var="user">
    <s:property value="#user.username"/> --- 
    <s:property value="realname"/>
    <br>
    </s:iterator>


%的使用,和JavaScript中的eval方法类似:

“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。

<h1>%的用法</h1>  
<s:set var="myurl" value="http://www.xxx.com"></s:set>
<!-- 输出#myurl字符串 -->
<s:url value="#myurl"></s:url> <br>
<!-- “%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。 -->
<s:url value="%{#myurl}"></s:url>

日期的使用:

private Date time; 并且添加get set 的方法  

request.setAttribute(time = new Date());

<h1>时间标签</h1>

<s:property value="time"/> <br>
<s:date name="time" format="yyyy-MM-dd HH:mm:ss"/>



UI标签:

表单标签

form表单:

action制定提交的地址 ,namespace 命名空间 ,method 提交方式 get或者post,

theme  主题 

1:Simple    主题:最简单的主题

2:XHTML     主题:默认主题,使用常用的HTML技巧

3:CSS XHTML 主题:使用CSS实现的XHTML主题

4:AJAX      主题:基于XHTML主题,但是同工了AJAX功能

<h1>UI标签</h1>password 密码框:
  <s:form namespace="/user" action="user_add" method="post" theme="">
  <s:textfield name="username" label="用户名"></s:textfield>
  <s:textfield name="password" label="密码"></s:textfield>

testfield 文本框:

!-- 文本域 -->
<s:textarea label="说明" name="texter"></s:textarea>


radio 单选按钮:

标记生成Map: #{键:值,键:值}  必须有#

value指定默认值 如果是字符串需要加''

!-- 
单选按钮
构建list集合
-->
<s:radio list="{'男','女','不详'}" name="sex" label="性别" value="'女'"></s:radio>

checkboxlist 复选框 :标记生成集合 {'','',''} 不用加#

!-- 
多选按钮 
构建一个map集合:
括号的前面必须加上#
-->
<s:checkboxlist 
list="#{'lol':'英雄联盟','wzry':'王者农药','pw':'守望屁股'}" 
name="loves" label="爱好" value="{'lol','pw'}"></s:checkboxlist>


select 下拉列表:

直接给值:

!-- 下拉框 -->
<s:select list="#{'sz':'深圳','dg':'东莞','st':'汕头','sw':'汕尾','km':'昆明' }" 
label="城市" name="city" headerKey="-1" headerValue="---请选择---"></s:select>

获取传递的值: listValue 指定显示的值 ,listKey 指定实际提交的值

public String query(){

userList = new ArrayList<User>();
userList.add(new User("黄飞鸿", "黄某人"));
userList.add(new User("钢铁侠", "罗伯特唐尼"));
userList.add(new User("雷神", "托尔"));
userList.add(new User("蜘蛛侠", "蜘蛛"));
userList.add(new User("葫芦娃", "葫芦小金刚"));

time = new Date();

return SUCCESS;
}
s:select list="userList" label="领导" name="boss" 
headerKey="-1" headerValue="---请选择---" 
listKey="realname" listValueKey="username"></s:select>


hidden 隐藏域  submit 提交

<!-- 隐藏input -->
<s:hidden name="userid"></s:hidden>
<!-- 提交 -->
<s:submit value="提交"></s:submit>



非表单标签:

actionerror:如果Action实例的getActionError()方法返回不为null,则该标签负责输出该方法返回的系列错误。

actionmessage:如果Action实例的getActionMessage()方法返回不为null,则该标签负责输出该方法返回的系列消息。

div:此标签负责生成一个div片段

fielderror:如果Action实例存在表单域的类型转换错误、校验错误、该标签负责输出这些提示信息。

tree:生成一个树形结构

treenode:生成树形结构的节点。

注意::

必须先导入标签库 

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

struts标签必须和ognl表达式一起使用,不能和EL表达式一起使用