Java 杂谈

Struts2学习笔记 | 通用标签

2019-08-03  本文已影响3人  一颗白菜_

1.Struts2自动把Action对象放入到值栈中


2.property标签

名字 类型 默认值 说明
default String 可选,如果value值为null或没有给定,将显示该属性值
escape boolean 可选,是否要对HTML特殊字符进行转移
value String 来自栈顶对象 将要显示的值

3.url标签

名字 类型 默认值 说明
action String 可选,指定生成的url为哪个action
method String get 可选,指定action的方法,当用action属性来生成url时,如果指定该属性,url将连接到指定的action方法上
namespace String 可选,指定url的命名空间
value String 可选,指定将生成的url值(如果新建的url不是一个action的话)
var String 可选,指定用来被压入ContextMap中的键值

Demo

<%@ page import="struts.valuestack.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="struts.valuestack.PersonComparator" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="S" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: 白菜
  Date: 2019/8/2
  Time: 13:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <s:url value="/getProduct" var="url" >
        <!-- struts2自动把1001作为属性值,因为其不可能为属性名-->
        <s:param name="productId" value="1001"></s:param>
    </s:url>
    ${url}<!-- 输出:/struts2_new/getProduct?productId=1001 -->
    <br><br>
    <!-- 希望id是值栈中的productid-->
    <s:url value="/getProduct" var="url2" >
        <!-- 对于value,值会自动的进行OGNL解析-->
        <s:param name="productId" value="productId"></s:param>
        <s:param name="date" value="#session.date"></s:param>
    </s:url>
    ${url2}<!-- 输出:/struts2_new/getProduct?productId=20000&date=Sat+Aug+03+21%3A27%3A41+CST+2019  -->
    <br><br>
    <!-- 希望id是值栈中的productid-->
    <s:url value="/getProduct" var="url3" >
        <!-- 对于value,值会自动的进行OGNL解析,若不希望进行OGNL解析,则使用单引号引起来-->
        <s:param name="productId" value="'aaa'"></s:param>
    </s:url>
    ${url3}<!-- 输出:/struts2_new/getProduct?productId=aaa  -->
    <br><br>
    <!-- 构建一个请求action的地址-->
    <s:url action="testAction" namespace="/helloWorld" method="save" var="url4" >

    </s:url>
    ${url4}<!-- 输出:/struts2_new/helloWorld/testAction!save.action  -->
    <br><br>
    <s:url value="testUrl" var="url5" includeParams="get"></s:url>
    <!-- 还可以取为all 则可以解析post请求-->
    ${url5}<!-- 输出:testUrl?name=aaa  -->

</body>
</html>


4.set标签

Demo

<!-- 不想value属性被自动进行OGNL解析,加上单引号-->
<s:set var="productName" value="'555'" scope="request"></s:set>
<!-- 读取该值-->
pro:${requestScope.productName} <!--输出:pro:555 -->

5.push标签

Demo
先新建一个Person类:

package struts.valuestack;

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

index.jsp:

<%@ page import="struts.valuestack.Person" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Person person = new Person();
        person.setName("Write");
        person.setAge(10);
        request.setAttribute("person",person);
    %>
    <s:push value="#request.person">
        ${name} <!-- 打印Write -->
    </s:push>
    ss: ${name} <!-- null -->

</body>
</html>


6. if,else和else if标签

这个直接看Demo吧

<%@ page import="struts.valuestack.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="struts.valuestack.PersonComparator" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="S" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: 白菜
  Date: 2019/8/2
  Time: 13:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <!-- 可以直接使用值栈中的属性-->
    <!-- 这里为了简便,省略了Action类的代码,忽略这些值从哪来的问题-->
    <s:if test="productPrice > 2000">
        I7 处理器
    </s:if>
    <s:elseif test="productPrice > 800">
        I5处理器
    </s:elseif>
    <s:else>
        I3处理器
    </s:else>
    <s:if test="#request.person.age > 10">
        大于10
    </s:if>
    <s:else>
        其他
    </s:else>
</body>
</html>

7.iterator标签

Demo

<%@ page import="struts.valuestack.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="struts.valuestack.PersonComparator" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="S" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: 白菜
  Date: 2019/8/2
  Time: 13:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    
    <%
        List <Person> personList = new ArrayList <Person>();
        personList.add(new Person("bb",10));
        personList.add(new Person("cc",10));
        personList.add(new Person("gg",10));
        personList.add(new Person("aa",10));
        personList.add(new Person("ff",10));
        personList.add(new Person("ee",10));
        request.setAttribute("personList",personList);

    %>
    <s:iterator value="#request.personList" status="status">
        index:${status.index},count:${status.count},${name},${age}<br><br>
    </s:iterator>
</body>
</html>


8.sort标签

名字 类型 默认值 说明
comparator java.util.Comparator 在排序过程中使用的比较器
source String 将对之进行排序的可遍历对象
var String 用来引用因排序而新生成的可遍历对象的变量

Demo:
编写的比较器类:

package struts.valuestack;

import java.util.Comparator;

public class PersonComparator implements Comparator<Person> {

    @Override
    public int compare(Person o1, Person o2) {
        //按名字来排序
        return o1.getName().compareTo(o2.getName());
    }
}

jsp代码:

<%@ page import="struts.valuestack.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="struts.valuestack.PersonComparator" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="S" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: 白菜
  Date: 2019/8/2
  Time: 13:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        PersonComparator pc = new PersonComparator();
        request.setAttribute("comparator",pc);
    %>
    <s:sort comparator="#request.comparator" source="#request.personList" var="persons2">
        <s:iterator var="#attr.persons2">
            ${name},${age}
        </s:iterator>
    </s:sort>
</body>
</html>

9.date标签


10.a标签

Demo

<%@ page import="struts.valuestack.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="struts.valuestack.PersonComparator" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="S" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: 白菜
  Date: 2019/8/2
  Time: 13:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <s:iterator value="#request.personList">
        <!-- 可以使用%{}把属性包装起来,使其进行强制的OGNL解析-->
        <!-- 输出结果为:类似HTML中的a标签生成出来的超链接一样-->
        <s:a href="getPerson.action?name=%{name}">${name}</s:a>
    </s:iterator>    
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读