首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Struts2中ONGL表达式施用备忘

2012-12-23 
Struts2中ONGL表达式使用备忘平时Struts2开发,常见在标签中使用OGNL表达式,将自己整理的一些使用原则记录

Struts2中ONGL表达式使用备忘

平时Struts2开发,常见在标签中使用OGNL表达式,将自己整理的一些使用原则记录在这里

?

1. 根对象

采用堆栈方式存储

访问根对象直接

Acttion对象默认会当做根对象放在栈中,直接取action对象的属性

<s:property value="username"/>

?

2. 上下文对象

采用Map方式存储

访问上下文对象必须以 # 开头

#request

#session

#param

#attr

以上都为默认上下文对象

ActionContext.getContext().put(key, value) -- value被存放在 #request['key']? or #request.key 中

ActionContext.getContext().getSession().put(key, value) --value被存放在 #session['key'] or #session.key 中

<s: property value="#request.username"/>

?

3. 关于表单元素的value

使用<s:.../>表单,如无特殊情况,只要设置name属性即可,未来如果Action中对应此name的属性有值,则会在表单中自动显示

如果有特殊情况,需要自己管理表单value的显示值,可以使用 EL表达式 或 OGNL表达式(推荐)

?

推荐使用OGNL表达式 %{},OGNL表达式通常写在表单元素内部

%{} 内写OGNL表达式,可以直接访问Actioin内的属性或方法

例如

<s:hidden name="user.name" value="%{username}"/>? -- 直接取Action中的username属性,并放置在Action中User属性的name属性上(有点绕)

?

EL表达式 ${} 通常写在表单元素外部

${username}

注意,如果EL表达式写在表单元素内部,会引发

According to TLD attribute directive in tag file, attribute value does not accept any expressions

好像通过开关能打开,但不推荐这么用

?

4. 关于逻辑判断表单中字符串比较的注意

<s:if test='str == "add"'></s:if>

说明:

在网上查到的,说ONGL中进行字符串比较时,目标字符串一定用双引号表达,否则可能会引发异常

为避免双引号冲突,标签本身属性表达可以用单引号

热点排行