非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表达式一起使用