现在的位置: 首页 > 综合 > 正文

再探ModelDriven的原理

2018年05月17日 ⁄ 综合 ⁄ 共 1447字 ⁄ 字号 评论关闭
文章目录
Object Property Name Property Value
com.qbkj.erp.domain.User ischarge false
id null
username lala
registerdate Wed Aug 22 14:32:29 CST 2012
jdbctemplate jt2
password haha
com.qbkj.erp.action.RegisterAction texts null
model [null,lala,haha,jt2,]
actionErrors []
servletResponse There is no read method for servletResponse
errors {}
fieldErrors {}
errorMessages []
locale zh_CN
actionMessages []
servletRequest There is no read method for servletRequest
com.opensymphony.xwork2.DefaultTextProvider texts null

可以直接看到,在用model Driven的时间会把值直接传到value stack中。

那com.opensymphony.xwork.ModelDriven接口又是做什么的呢? 它会将Object getModel()取得的Model放到ValueStack中

实现这个接口就是为了把值放到值栈中。

下面解决如何取的问题。这是一个通用的方法。

struts支持OGNL和JSTL,GroovyVelocity表达式,其中OGNL通常要与struts的标签结合使用,EL一般都是与JSTL结合使用,EL用来获得显示数据,JSTL可以对其进行各种处理。

在使用struts标签的时间,<s:property value="username"/>如果能够取到值,说明这个值就在值栈中,如果在前面加上#之后能够取到,说明它在

Stack Context中。

Struts2为我们定义了许多明明对象,他们分别是"ValueStack","Parameters","Session","Request", "Appliction","Attr",其中"ValueStack"被设置为上下文的根对象。访问非根对象必须加上"#"号,这就是出现"#"的原因。Struts2中的标的处理类,并不是所有都将标签的属性作为OGNL表达式来看待,有时候我们需要设置动态地值,则必须告诉标签的处理类该字符串按照OGNL表达式来处理,%{}符号的作用就是告诉标签的处理类将它包含的字符串按照OGNL表达式处理。
"$"符号用于XML文件中用于获取动态值,与%{}作用类似。

EL与JSTL的区别

EL即Expression Language(表达式语言)
EL的语法:${  EL exprission }
${  bean.name } 或  ${  bean['name'] }
说白了,EL是用来显示数据的,功能跟<%=表达式%> 一样,EL是不需要引入什么东西的

JSTL(JavaServerPages Standard Tag Library)JSP标准标签库
JSTL标准标签库包括核心标签库和SQL标签库,核心标签库常用的是if和forEach
说白了JSTL常实现网页逻辑判断和迭代显示的,需要引入
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
只要JSTL和EL结合,就基本可以让页面再无<% %> jsp代码了。

抱歉!评论已关闭.