OGNL表达式语言学习   Object Graph Navigation Language 对象图导航语言

  1. 只有传参传进去才会构造,想初始化domain model,可以自己new,也可以传参数值,但是这时候需要保持参数为空的构造方法。

(右键 Source >Sort Members给代码排序使之更规范。)

  1. 访问静态方法:<s:property value=”@类名@方法名”/>,还要在struts.xml里配属性:

<constant name=”struts.ognl.allowStaticMethodAccess” value=”true”></constant>

访问静态属性:<s:property value=”@类名@属性名”/>

访问Math类的静态方法:<s:property value=”@@max{2,3}”/>

  1. 投影(过滤):<s:property value=”users.{?#this.age==1}.{age}[0]”/>(?#或^#(符合条件开头的那个)或$#(符合条件结尾的那个))

 

Struts标签

Property: <s:property value=”’username’”/>因为property里面的value是object。双引号套单引号是取值为字符串username。不套单引号则是作为ognl标签解析,取key为username的value。

<s: property value=”admin” default=”管理员”/> 如果取不到,设置默认值。

设定HTML:<s:property value=”’<hr/>’” escape=”true”/> escape默认为false,就是不要解析。HTML标签转成普通字符串。

 

将String强制当ognl表达式:value=”%{#incPage}”

$用于i18n和struts配置文件;#取的ActionContext的值。%将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用。

 

设计约定:

  1. 能简单就不要复杂。
  2. 库名:项目名称
  3. 表的命名:_Model名。
  4. 字段名保持和属性名一致。(尽量不要起名和数据库命名冲突。)
  5. 用层来划分包 com.bjsxt.bbs.action model(bean) service
  6. Action类都已Action结尾。这样不容易重名,不容易混淆。
  7. 使用*-* 的配置。
  8. 前台/
  9. 后台/admin