`

OGNL表达式

    博客分类:
  • Java
阅读更多

<ol>
  <li>访问值栈中的action的普通属性: username = <s:property value="username"/> </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="@com.bjsxt.struts2.ognl.S@s()"/></li>
  <li>访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/></li>
  <li>访问Math类的静态方法:<s:property value="@@max(2,3)" /></li>
  <hr />
  <li>访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.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 />
  <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].username"/></li>
  
 </ol>

 

 

Action

 

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.opensymphony.xwork2.ActionSupport;

public class OgnlAction extends ActionSupport {
 private Cat cat;
 private Pig pig;
 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"));
  
 }

 public String execute() {
  return SUCCESS;
 }

 public Cat getCat() {
  return cat;
 }
 
 public Pig getPig() {
  return pig;
 }

 public void setPig(Pig pig) {
  this.pig = pig;
 }

 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 m() {
  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;
 }

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

 

Object


public class Cat {
 
 private Dog friend;
 
 public Dog getFriend() {
  return friend;
 }

 public void setFriend(Dog friend) {
  this.friend = friend;
 }

 public String miaomiao() {
  return "miaomiao";
 }
}

 


public class Dog {
 
 private String name;
 
 public Dog() {
  
 }

 public Dog(String name) {
  super();
  this.name = name;
 }

 

public class Pig {
 
 public String name = "";

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
 
 

}

 
 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 @Override
 public String toString() {
  return "dog: " + name;
 }
}

 

 

public class S {
 public static String STR = "STATIC STRING";
 
 public static String s() {
  return "static method";
 }
}

 

public class TestAction extends ActionSupport {

 @Override
 public String execute() throws Exception {
  return super.execute();
 }

}

 

 

package com.bjsxt.struts2.ognl;

public class User {
 private int age = 8;
 
 public User() {
  
 }
 
 public User(int age) {
  super();
  this.age = age;
 }


 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }
 
 @Override
 public String toString() {
  return "user" + age;
 }
}


Struts.xml

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
 <include file="/com/bjsxt/struts2/ognl/ognl.xml"/>
   


</struts>

分享到:
评论

相关推荐

    ognl表达式 ognl表达式

    ### OGNL表达式的理解和应用 #### 一、OGNL简介与基本概念 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取和设置Java对象的属性。它是Struts2框架中的默认表达式语言,同时也被广泛...

    JS:ognl表达式

    ### JS:ognl表达式详解 #### 一、OGNL表达式概述 OGNL (Object-Graph Navigation Language) 是一种强大的表达式语言,用于获取和设置 Java 对象的属性。它最初是由 John Rose 和 Luke Blanshard 开发,并被广泛...

    Struts2 使用OGNL表达式

    1. **基础语法**:OGNL表达式的格式通常为`object.property`或`object[index]`,用于访问对象的属性或数组/集合的元素。例如,`user.name`将获取名为`user`的对象的`name`属性。 2. **动态属性**:OGNL支持动态属性...

    Struts2 如何使用OGNL表达式(三十八)

    因此,开发者应使用Struts2的安全配置选项,如禁用不安全的OGNL表达式,或者使用`@SkipValidation`注解来限制某些Action方法的OGNL表达式执行。 总结来说,Struts2中的OGNL表达式是连接模型和视图的关键工具,它...

    Struts2深入学习----OGNL表达式原理

    这篇深入学习的文章主要探讨了OGNL表达式的原理和使用。 首先,我们来理解一下OGNL是什么。OGNL是一种强大的表达式语言,允许开发者通过简单的字符串表达式来访问和修改对象图。在Struts2中,OGNL用于在Action和...

    struts2 中 OGNL表达式的使用

    struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用

    ognl表达式java使用案例详解(测试通过)

    Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势: 1、 支持对象方法调用,如xxx.doSomeSpecial(); 2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@...

    ognl表达式

    1. **表达式语法**:OGNL表达式通常由对象引用、属性访问、方法调用和运算符组成。例如,`user.name`表示访问用户对象的name属性,而`list[0].title`则表示访问列表的第一个元素的title属性。 2. **上下文(Context...

    Struts2的标签库及OGNL表达式语言

    本篇文章将详细探讨Struts2中的OGNL表达式语言以及标签库。 **OGNL(对象图导航语言)** OGNL是一种强大的表达式语言,它允许开发者通过简洁的语法来访问和操作对象的属性。在Struts2框架中,OGNL扮演着至关重要的...

    ognl表达式案例

    在本案例中,我们将深入探讨OGNL表达式的用法及其在Struts2中的应用。 首先,OGNL是一种灵活的表达式语言,允许开发者访问和操作对象图。它的核心特性包括属性访问、方法调用、集合操作、类型转换等。例如,`user....

    struts2 ognl表达式

    Struts2 OGNL表达式是Java Web开发中一个重要的概念,它是一种强大的对象图形导航语言(Object-Graph Navigation Language)。在Struts2框架中,OGNL被广泛用于视图层,作为数据绑定的主要手段,使得开发者能够方便...

    OGNL表达式2讲

    在本资源“OGNL表达式2讲”中,我们将深入探讨OGNL的使用,特别是针对各种常用的标签和实际应用案例。这个压缩包包含一个名为“OGNL”的文件,可能是一个文档或代码示例,用于辅助理解讲解内容。 1. **OGNL基础** ...

    OGNL表达式中的#、%和$.txt

    “$”符号在Struts2中主要用作OGNL表达式的起始标记,在模板文件(如JSP页面)中,它用于指示Struts2框架应该解析为OGNL表达式。 1. **模板文件中的应用**: - 示例:`reg.ageRange = $ {min} 到 $ {max}` - 解释...

    OGNL表达式语言学习

    NULL 博文链接:https://huguifuture.iteye.com/blog/761843

    struts2 OGNL表达式

    Struts2 OGNL表达式是Java开发中一个重要的知识点,尤其在Web应用程序设计中扮演着核心角色。OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,它被Struts2框架广泛用于视图层与模型层之间的数据...

    struts2-OGNL表达式测试

    这个“struts2-OGNL表达式测试”可能是一个测试项目或代码示例,旨在演示如何在Struts2应用中使用OGNL表达式。 OGNL是Struts2的核心组件之一,它允许开发者通过简单的字符串表达式来获取或设置对象的属性。这使得视...

    ognl表达式的用法

    下面我们将深入探讨如何使用OGNL表达式及其在示例代码中的应用。 首先,让我们看看提供的示例代码片段。这段代码是一个基于JSP的Struts2应用,展示了如何使用OGNL表达式来访问不同范围内的属性(request、session、...

    struts2 OGNL表达式使用

    struts2 OGNL表达式使用 OGNL(Object-Graph Navigation Language)是对象图导航语言,允许开发者在Struts2应用程序中访问和操作对象及其属性。下面是OGNL表达式的使用方法: 访问基本属性 1. 访问值栈中action的...

    struts2_OGNL表达式ActionContext及valuesStack

    本文将深入探讨Struts2中的OGNL表达式,ActionContext以及valuesStack。 首先,OGNL表达式是Struts2中不可或缺的一部分,它允许开发者以一种声明式的方式访问和修改对象的属性。比如,`myBean.getMyProperty()`这样...

Global site tag (gtag.js) - Google Analytics