zoukankan      html  css  js  c++  java
  • Structs2 ognl说明

    下面是struts.xml中的配置

    <!-- 以下设置参数值可以在struts2-core.jar中的org.apache.struts下的default.properties文件中查到 -->
     <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
     <!-- value为true时(默认值为false)是开发模式,有更改会自动提交到web服务器去 -->
     <constant name="struts.devMode" value="true"/>
     <!-- 该设置是允许jsp中访问静态成员 -->
     <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
     <!-- 引入另外一个外部xml配置文件 -->
     <include file="/com/java/login/struts2/action/ognl.xml"/>

    以下是ognl.xml的配置

    <struts>
     <package name="ognl" extends="struts-default">
      <action name="ognl" class="com.java.login.struts2.action.OgnlAction">
       <result>/ognl.jsp</result>
      </action>
      <action name="test" class="com.java.login.struts2.action.TestAction">
       <!-- chain服务器端跳转 -->
       <result type="chain">ognl</result>
      </action>
     </package>
    </struts>

    OGNL使用介绍:

    <%@ taglib uri="/struts-tags" prefix="s" %>

    <body>
    <ol>
     <li>访问值栈中的action的普通属性: userName= <s:property value="userName" /></li>
     <li>访问值栈中对象的普通属性(get set方法): <s:property value="user.age" /></li>
     <li>什么叫OGNL:Object Graph Navigation Language -对象图导航语言</li>
     <li>访问值栈中对象的普通属性: <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="method()"/></li>
     <hr/>
     <li>访问静态方法: <s:property value="@com.java.login.struts2.action.Test@getValue()"/></li>
     <li>访问静态属性: <s:property value="@com.java.login.struts2.action.Test@STR"/></li>
     
     <li>访问Math类的静态方法: <s:property value="@@max(2,3)"/></li>
     <hr/>
     <li>访问普通类的构造方法: <s:property value="new com.java.login.struts2.pojo.User()" /></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]"/></li>
     <hr/>
     <li>访问Set: <s:property value="dogs"/></li>
     <li>访问Set中某个元素: <s:property value="dogs[1]"/></li>
     <hr/>
     <li>访问Map: <s:property value="dogMap"/></li>
     <li>访问Map中某个元素: <s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog102']"/> | </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()"/></li>
     <hr>
     <li>投影(过滤): <s:property value="users.{?#this.age==1}[0]"/></li>
     <li>投影(^开始的那个): <s:property value="users.{^#this.age>1}.{age}"/></li>
     <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]"/></li>
    </ol>
    <s:debug></s:debug>
    </body>

    上边与Action交互的类:

    public class OgnlAction extends ActionSupport {

     private static final long serialVersionUID = 1L;

     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(11));
      users.add(new User(12));
      users.add(new User(13));
      
      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"));
     }

     @Override
     public String execute() throws Exception {
      return "success";
     }

     public Cat getCat() {
      return cat;
     }

     public Map<String, Dog> getDogMap() {
      return dogMap;
     }

     public Set<Dog> getDogs() {
      return dogs;
     }

     public String getPassword() {
      return password;
     }

     public User getUser() {
      return user;
     }

     public String getUserName() {
      return userName;
     }

     public List<User> getUsers() {
      return users;
     }

     public String method() {
      return "Hello";
     }

     public void setCat(Cat cat) {
      this.cat = cat;
     }

     public void setDogMap(Map<String, Dog> dogMap) {
      this.dogMap = dogMap;
     }

     public void setDogs(Set<Dog> dogs) {
      this.dogs = dogs;
     }

     public void setPassword(String password) {
      this.password = password;
     }

     public void setUser(User user) {
      this.user = user;
     }

     public void setUserName(String userName) {
      this.userName = userName;
      user.setUserName(userName);
     }

     public void setUsers(List<User> users) {
      this.users = users;
     }
    }

  • 相关阅读:
    android阅读器开发
    Android开源库
    Android开源项目分类汇总
    java 读取显示txt内容(Swing)
    Java 图形用户界面设计 (Swing)
    Java读取txt文件,换行写txt文件
    出国旅行口语必备300句
    100-days:nine
    100-days: eight
    The Attention Merchants
  • 原文地址:https://www.cnblogs.com/lechance/p/4373282.html
Copyright © 2011-2022 走看看