?
class="jsp页面">需引入标签库:<%@ taglib uri="/struts-tags" prefix="s" %> <body> <!-- 测试下面方法,可在浏览器地址栏输入:http://localhost:8088/strutsOGNL/ognl?username=u&password=1&user.age=10&cat.miaomiao --> OGNL简单总结=>例:在地址栏输入参数username=u会调用Action属性里面的setUsername方法,把u赋值给usernme属性,然后在ValueStack中会调用getUsername方法取得usernme的属性放入Property Value中,通过OGNL表达式就可以获取出值。 如果usernme属性没有Set方法,在Property Value中获取该属性时显示:There is no read method for username <ol> <li>访问值栈中的action的普通属性: username = <s:property value="username"/> password = <s:property value="password"/></li> <li>访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/> | wrong: <%--<s:property value="user[age]"/>--%></li> <li>访问值栈中对象的普通属性(get set方法): <s:property value="cat.friend.name"/></li> <li>访问值栈中对象的普通方法:<s:property value="password.length()"/></li> <li>访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" /></li> <li>访问值栈中action的普通方法:<s:property value="m()" /></li> <hr /> <li>访问静态方法:<s:property value="@ognl.S@s()"/></li> <li>访问静态属性:<s:property value="@ognl.S@STR"/></li> <li>访问Math类的静态方法:<s:property value="@@max(2,3)" /></li> <hr /> <li>访问普通类的构造方法:<s:property value="new ognl.User(8)"/></li> <hr /> <li>访问List:<s:property value="users"/></li> <li>访问List中某个元素:<s:property value="users[1]"/></li> <li>访问List中元素某个属性的集合:<s:property value="users.{age}"/></li> <li>访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/></li> <li>访问Set:<s:property value="dogs"/></li> <li>访问Set中某个元素:<s:property value="dogs[1]"/></li> <li>访问Map:<s:property value="dogMap"/></li> <li>访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/></li> <li>访问Map中所有的key:<s:property value="dogMap.keys"/></li> <li>访问Map中所有的value:<s:property value="dogMap.values"/></li> <li>访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> </li> <hr /> 从集合中取出age=1的第一个元素 <li>投影(过滤):<s:property value="users.{?#this.age==1}[0]"/></li> 从集合中取出age>1的开始那个元素 <li>投影:<s:property value="users.{^#this.age>1}.{age}"/></li> 从集合中取出age>1的最后那个元素 <li>投影:<s:property value="users.{$#this.age>1}.{age}"/></li> 判断集合是否为空 <li>投影:<s:property value="users.{$#this.age>1}.{age} == null"/></li> <hr /> <li>[]:<s:property value="[0].username"/></li> <li>bean 查看debug情况: <s:bean name="ognl.Dog" var="myDog"> <s:param name="name" value="'oudy'"></s:param> </s:bean> 拿出值: <s:property value="#myDog.name"/> </li> </ol> </body>
?
private Cat cat; private Map<String, Dog> dogMap = new HashMap<String, Dog>(); private Set<Dog> dogs = new HashSet<Dog>(); private String password; private User user; private String username; private List<User> users = new ArrayList<User>(); public OgnlAction() { users.add(new User(1)); users.add(new User(2)); users.add(new User(3)); dogs.add(new Dog("dog1")); dogs.add(new Dog("dog2")); dogs.add(new Dog("dog3")); dogMap.put("dog100", new Dog("dog100")); dogMap.put("dog101", new Dog("dog101")); dogMap.put("dog102", new Dog("dog102")); } //省略get和set方法……
?
?