Struts2之标签库常用标签

基本概述:在JavaWeb中,Struts2标签库是一个比较完善,而且功能强大的标签库,它将所有标签都统一到一个标签库中,从而简化了标签的使用,它还提供主题和模板的支持,极大地简化了视图页面代码的编写,同时它还提供对ajax的支持,大大的丰富了视图的表现效果。与JSTL(JSP Standard Library,JSP 标准标签库)相比,Struts2标签库更加易用和强大。

PS:使用标签,需要引入Struts2核心jar包,在jsp头部,加入<%@ taglib uri="/struts-tags" prefix="s" %>即可

Struts2标签库的分类:


数据标签:

1、property   

<!-- value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值 -->
<s:property value="cla2.num1"/>

2、set

注:set中的var没有放到值栈中

<s:set var="test2" value="cla2"></s:set>
<!-- 取不到值,因为标签代表的含义是,从值栈中去找test2的num1属性值 -->
没加#:<s:property value="test2.num1"/>
<!-- 能取到值,因为取的是非根(不是valuestack下)对象的num1属性值 -->
加#:<s:property value="#test2.num1"/>

页面效果:

3、push

扫描二维码关注公众号,回复: 4107870 查看本文章

push表示弹栈,标签体中即可拿到弹栈内容,结束标签回归原样

push前:<s:property/>
<s:push value="result">
   push后:<s:property/>
</s:push>
push完成后:<s:property/>

页面效果:

4、action

作用:是为了向后台发请求拿数据,加载初始化数据所用

<s:action name="tagAction" namespace="/sy" var="test3"></s:action>
test3:<s:property value="test3" />
test3.result:<s:property value="#test3.result" />

页面效果:

5、url

    作用:用于存放一个路径
    属性:
        action:动作名称
        namespace:名称空间
        var:取值是一个普通字符串。他会把action和namespace组成一个url作为value,把var的取值作为一个key,存入contextMap中

<s:url namespace="/sy" action="tagAction" var="test4"></s:url>
<s:a href="%{#test4}">GO</s:a>

6、param

属于子标签,通常是配合action、url去使用的

<s:url namespace="/sy" action="tagAction" var="test5">
   <s:param name="test6">result</s:param>
   <s:param name="test7" value="result"></s:param>
</s:url>
test5:<s:property value="test5" />

页面效果:

7、date

   它是用于格式化输出日期
    name属性:取值是一个ognl表达式,表示要格式化的日期对象
    format属性:指定格式
    var属性:取值是一个普通的字符串。
           把格式化好的日期字符串作为value,把var的取值作为key。存入contextMap中

<%
   request.setAttribute("time", new Date());
%>
<s:date name="#request.time" format="yyyy-MM-dd"/>

8、debug

debug标签用于调试Struts2,使用它会在页面中生成一个debug标签,点击后会显示服务器各种对象信息,包括值栈、ContextMap等

<s:debug></s:debug>

控制标签:

1、iterator

s:iterator是struts2的一个迭代标签,它的value属性取值是一个OGNL表达式
var属性:它的取值就是一个普通的字符串.
用了var:把每次遍历的对象作为value,把var的值作为key,存入ContextMap中
没用var:把每次遍历的对象压入栈顶,再下次遍历之前弹栈(从栈顶移走)

<%
   request.setAttribute("names", new String[]{"zs","ls","ww"});
%>
<ul>
   <s:iterator value="#request.names" var="i">
       <li><s:property value="#i" /></li>
   </s:iterator>
</ul>

2、if/elseif/else

          <%
          	request.setAttribute("score", new Integer(30));
          %>
          <s:if test="#request.score>80">A</s:if>
          <s:elseif test="#request.score>60">B</s:elseif>
          <s:else>C</s:else>

表单标签:

               <s:form name="tagAction" namespace="/sy">
          		<s:textfield label="姓名" name="uname"></s:textfield>
          		<!-- 写法一 -->
          		<s:radio list="{'男','女'}" value="'男'" label="性别" name="sex"></s:radio>
          		<!-- 写法二 -->
          		<s:radio list="#{1:'男',2:'女'}" value="2" label="性别" name="sex2"></s:radio>
          		<s:select list="#{1:'T211',2:'T204',3:'T237' }" label="班级" name="clazz"></s:select>
          		<!-- 单选复选框:往后台传的是boolean类型 -->
          		<s:checkbox label="婚否" name="married"></s:checkbox>
          		<!-- 多选复选框 -->
          		<s:checkboxlist list="#{1:'吃',2:'喝',3:'玩' }" label="爱好" name="hobby"></s:checkboxlist>
          		<s:textarea label="备注" name="remark"></s:textarea>
          	</s:form>

页面效果:

猜你喜欢

转载自blog.csdn.net/weixin_42687829/article/details/83031661