4..Struts2_标签

本文详细介绍Struts2标签库的使用方法,包括通用标签如property、url等,不通过标签如action、bean等,以及checkbox标签的具体应用场景。通过丰富的示例帮助读者理解如何在实际开发中运用这些标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:

  1. 通用标签
  2. 不通用标签
  3. checkbox标签

 

一.通过标签

1.property 标签

property 标签用来输出一个值栈属性的值

  • default [String] 可选 默认:,如果value值为null或没有给定,将显示该属性值
  • escape [Boolean]

示例:
输出 Action 属性 customerId 的值: <s:property value="customerId"/>
输出 session 属性 userName 的值: <s:property value="#session.userName"/>

在许多情况下, JSP EL 可以提供更简洁的语法
 

2.url 标签

 

<!--  s:url:创建一个URL字符串-->
<br><br>
<s:url value="yiguang1" var="url1">
	<!--指定url包含的请求参数,250不可能是一个属性名,struts2直接把250作为属性值-->
	<s:param name="yi" value="250"></s:param>
</s:url>
url1=${url1}
	
<br><br>
<s:url value="yiguang2" var="url2">
	<!--对于value值会自动进行OGNL解析-->
	<s:param name="yi2" value="productName"></s:param>
</s:url>
url2:${url2}
	
<br><br>
<s:url value="yiguang3" var="url3">
	<!--对于value值会自动进行OGNL解析,不存在的value将不做处理 -->
	<s:param name="yi3" value="abcd"></s:param>
</s:url>
url3:${url3}

<br><br>
<s:url value="yiguang4" var="url4">
	<!--对于value值会自动进行OGNL解析,若不希望进行OGNL解析,则使用单引号引起来-->
	<s:param name="yi4" value="'productId'"></s:param>
</s:url>
url4:${url4}

<br><br>
<s:url action="action666" namespace="/helloWorld" method="save" var="url5"></s:url>
url5:${url5}

<br><br>
<s:url action="czy_save" var="url3" includeParams="all">
    </s:url>
${url3 }

结果显示:

 

3.set 标签

向page、request、session、application 域对象中加入一个属性值。

    <s:set name="xuehao" value="541107030" scope="request"></s:set>
    set1:${requestScope.xuehao }<br><br>

    <!-- 对于非数字的value值,会自动进行OGNL解析,调用值栈的属性-->
    <s:set name="yiguang" value="productDesc" scope="request"></s:set>
    set2:${requestScope.yiguang }<br><br>

    <!-- 对于OGNL解析后不存在的value将不做处理 -->
    <s:set name="banji" value="likesheng" scope="request"></s:set>
    set3:${requestScope.banji }<br><br>

结果显示:

4:push 标签

push 标签将把一个对象压入 ValueStack 而不是压入 ContextMap.
push 标签在标签起始时把一个对象压入栈, 标签结束时将对象弹出栈.

    <%
    Person p = new Person("tom",24);
    request.setAttribute("person", p);
    %>
    <s:push value="#request.person">
    姓名:${name }<br>
    </s:push>
    姓名:${name }

 

5.if, else 和 elseif 标签

这三个标签用来进行条件测试, 它们的用途和用法类似于 if, else 和 elseif 关键字. 其中 if 和 elseif 必须有 test 属性

<!--可以直接使用值栈的属性-->
<s:if test="productPrice >1000">
	i7处理器
</s:if>
<s:elseif test="productPrice >800">
	i5处理器
</s:elseif>
<s:else>
	i3处理器
</s:else>
    

输入:


结果显示:

i5处理器

 

6.iterator 标签

iterator 标签用来遍历一个数组, Collection 或一个 Map, 并把这个可遍历对象里的每一个元素依次压入和弹出 ValueStack 栈

iterator 标签的 status 属性的属性值:

实例:

details.jsp:需要创建一个类添加name和age属性

    <%
    List<Person> persons = new ArrayList<Person>();
    persons.add(new Person("A",10));
    persons.add(new Person("B",20));
    persons.add(new Person("C",30));
    persons.add(new Person("D",40));
    persons.add(new Person("E",50));

     request.setAttribute("persons", persons);
     %>

     <s:iterator value="#request.persons" status="s">
        name--${name }--index--${s.index}--age--${age }--${s.count }<br>
     </s:iterator>

结果显示:

 

7.sort 标签

sort 标签用来对一个可遍历对象里的元素进行排序.

 

    <%
    List<Person> persons = new ArrayList<Person>();
    persons.add(new Person("A",10));
    persons.add(new Person("D",40));
    persons.add(new Person("B",20));
    persons.add(new Person("E",50));
    persons.add(new Person("C",30));

     request.setAttribute("persons", persons);
     %>

     <s:iterator value="#request.persons" status="s">
        name--${name }--index--${s.index}--age--${age }--${s.count }<br>
     </s:iterator>
     <br><br>
     <!-- s:sort 可以对集合中的元素进行排序 -->
     <%
        PersonComparator pc = new PersonComparator();
        request.setAttribute("comparator", pc);
      %>
      <s:sort comparator="#request.comparator" source="#request.persons" var="person_">
        <s:iterator value="#attr.person_">
            ${name }--${age } <br>
        </s:iterator>
      </s:sort>

 

package com.qbz.struts2_02;

import java.util.Comparator;

public class PersonComparator implements Comparator<Person> {

    @Override
    public int compare(Person o1, Person o2) {
        return o1.getName().compareTo(o2.getName());
    }

}


 

8.date 标签

date 标签用来对 Date 对象进行排版

format 属性的值必须是 java.text.SimpleDateFormat 类里定义的日期/时间格式之一.

      <!-- date 标签 -->
      <s:date name="#session.date" format="yyyy-MM-dd hh:mm:ss" var="data_"/>
      ${data_ }

 

9.a 标签

a 标签将呈现为一个 HTML 连接. 这个标签可以接受 HTML 语言中的 a 元素所能接受的所有属性.

     <s:iterator value="#request.persons">
         <!-- href中对name进行强制OGNL解析  %{} -->
        <s:a href="getPerson.action?name=%{name}">${name }</s:a><br>
     </s:iterator>


 

二.不通过标签

1.action 标签

action 标签用在页面上来执行一个 action.
action 标签还会把当前 Action 对象压入 ValueStack 值栈的 ContextMap 子栈.

2.bean 标签

bean 标签将创建一个 JavaBean, 并把它压入 ValueStack 值栈的 ContextMap 子栈. 这个标签的功能与 JSP 中的 useBean 动作元素很相似

3.include 标签

include 标签用来把一个 Servlet 或 JSP 页面的输出包含到当前页面里来.

这里写图片描述


4.append, merge 标签

append 标签用来合并可遍历对象

merge 标签用来交替合并可遍历对象

这里写图片描述

这里写图片描述


5.generator 标签

generator 标签用来生成一个可遍历对象并把它压入 ValueStack 栈.

generator 标签结束标记将弹出遍历对象

这里写图片描述

如果在一个 generator 标签里给出了 converter 属性, 新生成的可遍历对象里的每一个元素都会传递到该属性所指定的方法进行必要的转换.

这里写图片描述

6.subset 标签

subset 标签用来创建一个可遍历集合的子集.

subset 标签通过 decider 属性来创建一个可遍历集合的子集

这里写图片描述

这里写图片描述


三.checkbox标签

一、JSP中

①集合为list

<s:checkboxlist name="list" list="{'Java','.Net','RoR','PHP'}" value="{'Java','.Net'}" />
生成html
<input type="checkbox" name="list" value="Java" checked="checked" /><label>Java</label>
<input type="checkbox" name="list" value=".Net" checked="checked" /><label>.Net</label>
<input type="checkbox" name="list" value="RoR" /><label>RoR</label>
<input type="checkbox" name="list" value="PHP" /><label>PHP</label>

②集合为MAP

<s:checkboxlist name="map" list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}"
listKey="key" listValue="value" value="{1,2,3}" />

生成html
<input type="checkbox" name="map" value="1" checked="checked" /><label>瑜珈用品</label>
<input type="checkbox" name="map" value="2" checked="checked" /><label>户外用品</label>
<input type="checkbox" name="map" value="3" checked="checked" /><label>球类</label>
<input type="checkbox" name="map" value="4" /><label>自行车</label>

③集合里存放javabean(id和name为Person的属性)

<%
    Person person1 = new Person(1, "小明");
    Person person2 = new Person(2, "小红");
    List<Person> list = new ArrayList<Person>();
    list.add(person1);
    list.add(person2);
    request.setAttribute("persons", list);
    request.setAtttibute("pchecked",person1);
%>
<s:checkboxlist name="beans" list="#request.persons" 
listKey="id" listValue="name" value="#request.pchecked.id" />

生成html
<input type="checkbox" name="beans" value="1" checked="checked" /><label>小明</label>
<input type="checkbox" name="beans" value="2" /><label>小红</label>

 

二、Action中

可以定义集合或数组接收值,比如定义List<Integer>可以接收上面③传来的值。

原帖详细讲了radio和select的用法,地址:http://wenku.baidu.com/view/caae743610661ed9ad51f384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值