Struts2标签
struts2标签大致分类
在struts2中有一套比较完备的标签体系,它既包含了想JSTL那样的控制标签,还包含了像HTML那样的表单标签,下面对struts2的标签进行一个简单的分类
- 普通标签
- 控制标签
- iterator
- if
- elseif
- else
- 数据标签
- property
- 控制标签
- UI标签
- 表单标签
- form
- textfield
- password
- select
- file
- checkboxlist
- radio
- submit
- 非表单标签
- actionerror
- 表单标签
在struts2的标签中大致就分为以上几类
struts2各大标签介绍
上面对标签进行了分类,下面就对这些标签进行单独介绍
普通标签
控制标签
首先在Action类中准备好一个List集合放到ActionContext中

import java.util.ArrayList; import java.util.List; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Demo2Action extends ActionSupport { public String execute() throws Exception { List<String> list = new ArrayList<>(); list.add("tom"); list.add("jerry"); list.add("jack"); list.add("rose"); list.add("lc"); ActionContext.getContext().put("list", list); return SUCCESS; } }
当然还得在jsp页面使用taglib引入一下
<%@ taglib prefix="s" uri="/struts-tags" %>
iterator
iterator是一个进行迭代的标签,就像for循环那样
<s:iterator value="#list"> <s:property /> </s:iterator> <!-- name表示当前的值 --> <s:iterator value="#list" var="name"> <s:property value="#name" /> <!-- property里面可以什么都不写,也可以写上name,都能找到当前循环的值 --> </s:iterator> <!-- 从1循环到100 --> <s:iterator begin="1" end="100" step="1"> <s:property /> </s:iterator>
if
if标签是进行判断用的
<s:if test="#list.size() == 4"> <!-- 在test里面进行判断 --> list的长度是4 </s:if>
elseif
else if也是进行判断的,当if中的条件或者上一个elseif中的条件不满足时就会进来这个elseif进行判断
<s:if test="#list.size() == 4"> list的长度是4 </s:if> <elseif test="#list.size() == 3"> list的长度是3 </elseif>
else
当上面所有的条件都不满足时就会进行else
<s:if test="#list.size() == 4"> list的长度是4 </s:if> <elseif test="#list.size() == 3"> list的长度是3 </elseif> <else> list的长度既不是3也不是4 </else>
数据标签
数据标签只有一个,而且在上面已经用过,它就是property
property
凡是能用到el标签的地方都可以用property代替
<s:property value="#list.size()" />
UI标签
表单标签
Struts2也准备了一套类似于HTML中的表单标签,struts2的标签相对于HTML的有两个好处,一个是内置了一套样式,还有就是能够根据栈中的属性自动回显,不用担心表单提交后页面刷新将数据都弄没了。当然,struts2表单标签内置的样式不会好看到那里去,因此,如果不喜欢可以去掉,只需要在form表单里面指定theme属性即可,有两种选择,一种是xhtml有样式,也是默认的选项,另外一种是simple没有样式
下面列一个大表单进行介绍
<s:form action="Demo2Action02" namespace="/" theme="xhtml"> <s:textfield name="name" label="用户名" ></s:textfield> <s:password name="passworld" label="密码"></s:password> <!-- 在radio中,如果传入list,那么value中的值会和显示的值一样 --> <s:radio list="{'男','女'}" name="gender" label="性别" ></s:radio> <!-- 如果需要显示男女,而value里面是0跟1,那么就应该用map来指定 --> <s:radio list="#{1:'男',0:'女'}" name="gender" label="性别" ></s:radio> <s:checkboxlist list="#{2:'抽烟',1:'喝酒',0:'撩妹'}" name="habits" label="爱好"></s:checkboxlist> <s:select list="#{2:'大专',1:'本科',0:'硕士'}" headerKey="" headerValue="---请选择---" name="edu" label="学历"></s:select> <s:file name="photo" label="艳照"></s:file> <s:textarea name="desc" label="个人简介"></s:textarea> <s:submit value="提交"></s:submit> </s:form>
非表单标签
非表单标签只有一个,就是actionerror标签,使用来显示action中产生的错误信息的
首先在Action类中使用 this.addActionError() 应该写入错误信息
public class DemoAction extends ActionSupport{ public String execute() throws Exception{ this.addActionError("错误啦!!"); return SUCCESS; } }
然后在jsp页面进行显示
<s:actionerror />