Struts2入门---常用的OGNL标签的用法

Posted Davis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2入门---常用的OGNL标签的用法相关的知识,希望对你有一定的参考价值。


<%
@page import="com.struts.valueStack.PersonComparator"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.struts.valueStack.Person"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <s:debug></s:debug>     <br> s:property: 打印值栈中的属性值的 : 关于于对象栈, 打印值栈中对象的属性值 <br><br> <s:property value="productName"/> <br><br> 对于 Map 栈, 打印 request , session , application 的某个属性值 或 某个请求参数的值 <br><br> <s:property value="#session.date"/> <br><br> <s:property value="#parameters.name[0]"/> <br><br> s:url: 创建一个 URL 字符串的 <br><br> <s:url value="/testUrl" var="url"></s:url> ${url } <br><br> <s:url value="/getProduct" var="url"> <s:param name="productId" value="10002"></s:param> </s:url> ${url } <br><br> <s:url value="/getProduct" var="url"> <!-- 对于 value 值会自动的 进行 OGNL 解析 --> <s:param name="productId" value="productId"></s:param> </s:url> ${url } <br><br> <s:url value="/getProduct" var="url"> <!-- 对于 value 值会自动的 进行 OGNL 解析 , 若不需要自动进行 OGNL 解析 则用单引号引起来--> <s:param name="productId" value="‘productId‘"></s:param> </s:url> ${url } <br><br> <!-- 构造一个请求的 action 的地址 --> <s:url action="testAction" namespace="/zhoujing" method="save" var="url"></s:url> ${url } <br><br> <s:url value="/testUrl" var="url" includeParams="get"></s:url> ${url } <br><br> s:set: 向 page ,request, session ,application 域对象中加入一个属性值 <br><br> <s:set var="productName" value="productName" scope="page" /> productName:^${pageScope.productName } <br><br> s:push: 把一个对象在标签开始后压入到值栈中, 标签结束时, 弹出值栈. <% Person person = new Person(); person.setName("zhoujing"); person.setAge(21); request.setAttribute("person", person); %> <br><br> <s:push value="#request.person"> push标签中:${name } </s:push> push标签外:---^${name }--- <br><br> s:if ,s:else if ,s:else: <br><br> ${requestScope.person.age } <!-- 可以直接使用值栈中的属性 --> <s:if test="#request.person.age < 18"> 少年 </s:if> <s:elseif test="#request.person.age < 12"> 儿童 </s:elseif> <s:else> 成年 </s:else> <br><br> s: iterator: 遍历集合 的.把这个遍历对象里的每一个元素依次压入和弹出. <% List<Person> persons = new ArrayList<Person>(); persons.add(new Person("BB",15)); persons.add(new Person("AA",10)); persons.add(new Person("CC",20)); request.setAttribute("persons", persons); %> <br><br> <s:iterator value="#request.persons"> ${name } --${age }<br> </s:iterator> <br><br> s:sort 可以对集合中的元素进行排序 <br><br> <% PersonComparator pc = new PersonComparator(); request.setAttribute("comparator", pc); %> <s:sort comparator="#request.comparator" source="#request.persons" var="persons2"></s:sort> <s:iterator value="#attr.persons2"> ${name } -- ${age }<br> </s:iterator> <br><br> s: date 可以对date对象进行排版 <br><br> <s:date name="#session.date" format="yyyy-MM-dd hh:mm:ss" var="date2"/> date:${date2 } <br><br> s:a 就是一个HTML 连接. <br><br> <s:iterator value="#request.persons"> <!-- 可以使用%{} 把属性包装起来, 使其进行强制的 OGNL 解析 --> <s:a href="getPerson.action?name=%{name}">${name }</s:a> </s:iterator> <br><br> <br><br> </body> </html>

最后打印出来的标签效果:


s:property: 打印值栈中的属性值的 : 关于于对象栈, 打印值栈中对象的属性值

周静

对于 Map 栈, 打印 request , session , application 的某个属性值 或 某个请求参数的值

17-7-27

zhoujing

s:url: 创建一个 URL 字符串的

/Struts2-3/testUrl

/Struts2-3/getProduct?productId=10002

/Struts2-3/getProduct?productId=10001

/Struts2-3/getProduct?productId=productId

/Struts2-3/zhoujing/testAction!save.action

/Struts2-3/testUrl?name=zhoujing

s:set: 向 page ,request, session ,application 域对象中加入一个属性值

productName:^周静

s:push: 把一个对象在标签开始后压入到值栈中, 标签结束时, 弹出值栈.

push标签中:zhoujing push标签外:---^---

s:if ,s:else if ,s:else:  

21 成年

s: iterator: 遍历集合 的.把这个遍历对象里的每一个元素依次压入和弹出.

BB --15
AA --10
CC --20


s:sort 可以对集合中的元素进行排序

AA -- 10
BB -- 15
CC -- 20


s: date 可以对date对象进行排版

date:2017-07-27 09:03:25

s:a

BB AA CC

这里面还包括了 Product 和 Person 两个java类 和一个comparator 排序所用的类. 就不一一展示了..





























































以上是关于Struts2入门---常用的OGNL标签的用法的主要内容,如果未能解决你的问题,请参考以下文章

ognl_值栈操作

Struts2中OGNL表达式的用法

什么是OGNL,什么是struts2标签?学的有点混淆了,感觉struts2标签包含了OGNL,别说定义,定义都知道。

ssh框架-Struts2

Struts2的标签库——OGNL表达式

Struts2中OGNL表达式的用法