5-struts2知识补充( 常用的struts2的标签,数据回显,防止重复提交)
目录:
1)ognl:Object Graph Navigation Language
简介:ognl工作在视图层,可以简化数据的访问操作。struts2框架用ognl作为默认的表达式语言,用来从框架的不同区域用一种同样的语言来引用数据。与jsp内置的EL语言相比,他们都属于表达式语言, 但是ognl的功能更加强大,提供了EL不具备的功能。
ognl常用符号:
- #:
- 获取非根对象,如OGNL上下文,Action上下文等。
- 用于过滤和投影集合,如:person.{?#this.age>50}
- 在jsp页面中创建Map集合
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <%--ognl表达式:在jsp页面中创建List集合 --%> <s:iterator value="{'reic','rose','lisa'}" var="name"> <s:property value="#name" /> <br> </s:iterator> <hr> <%--在jsp页面创建Map集合 --%> <s:iterator value="#{1:'reic',2:'rose',3:'lisa'}" var="entry"> 编号:<s:property value="#entry.key"/>--姓名:<s:property value="#entry.value"/> <br> </s:iterator> </body> </html>
<%--模拟从action传入userName的值 --%> <s:set var="userName" value="rose" scope="request"></s:set> <%--jsp页面获取userName的值 --%> <s:textfield name="username" value="#request.userName"></s:textfield>
直接这么写,jsp页面不会把textfield中的“#request.userName”当作ognl表达式,会直接在jsp页面中显示为#request.userName,如下所示
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <s:iterator value="{'rose','lisa','jack'}" var="name"> <s:property value="#name"/> </s:iterator> <hr> <%--模拟从action传入userName的值, value值要写ognl表达式 --%> <s:set var="userName" value="#request.name"></s:set> <%--jsp页面获取userName的值 --%> <s:textfield name="username" value="%{#request.userName}"></s:textfield> </body> </html>