1. 程式人生 > >struts2—OGNL

struts2—OGNL

賦值 image height wid 一個 png ring asc HR

1.OGNL表達式

  1.ONGL是對象視圖導航語言 ${user.name}這種寫法就是對象視圖導航

  2.OGNL的jar包是包含在Struts2基礎包中

  3.OGNL的存儲方式

    技術分享圖片

  4.OGNL表達式使用方式

public void ognlBasc() throws OgnlException {
        OgnlContext oc = new OgnlContext();
        User user = new User("zjj","123456");
        oc.setRoot(user);
        Map<String , User> map = new
HashMap<>(); map.put("user1", new User("xjh","123456")); map.put("user2", new User("tjl","3216465")); oc.setValues(map); //獲得root裏的內容 String result1 = (String) Ognl.getValue("name", oc, oc.getRoot()); //獲得map裏的內容 用#標識是獲得是map集合的內容咯不能 String result2 = (String) Ognl.getValue("#user1.name", oc, oc.getRoot());
//調用方法獲取字符串長度 Integer result3 = (Integer) Ognl.getValue("#user1.name.length()", oc, oc.getRoot()); //為屬性賦值 String result4 = (String) Ognl.getValue("#user1.name=‘xjh-zjj‘,#user1.name", oc, oc.getRoot()); //調用靜態方法/@全類名@方法名 Double result5 = (Double) Ognl.getValue("@@pow(2,3)", oc, oc.getRoot()); Double result6
= (Double) Ognl.getValue("@@PI", oc, oc.getRoot()); //ognl創建對象-list|map //1.創建list對象 String result7 =(String) Ognl.getValue("{‘zjj‘,‘xjh‘}[0]", oc, oc.getRoot()); //2.創建map集合 String result8 =(String)Ognl.getValue("#{‘user‘:‘123‘,‘age‘:‘123‘},#user",oc,oc.getRoot()); System.out.println(result7); }

2.OGNL與Struts2的結合

OGNL中的OGNLContext------------>valueStack值棧

  值棧(valueStack)由兩部分構成

  一部分叫做Root,放置的是一個棧

  一個部分叫做Context

棧是先進後出的

技術分享圖片

3.OGNL標簽

<!-- 取map的兩種方式 -->
<s:property value="#map[‘user1‘].password"/><br/>
<s:property value="#map.user1.name"/><br>
<hr>
<!-- 循環過濾功能 -->
<s:iterator value="#map.{?#this.name.length()==3}">
    <s:property value="name"/><br/>
</s:iterator>
<hr>

struts2—OGNL