ognl怎样和angularjs 属性值绑定绑定

3090人阅读
struts2(9)
package com.
import ognl.OgnlE
public class OgnlAccess {
* @param args
* @throws OgnlException
public static void main(String[] args) throws OgnlException {
Field field = new Field();
System.out.println(ognl.Ognl.getValue("publicField", field));
System.out.println(ognl.Ognl.getValue("privateField", field));
class Field{
public int publicField = 10;
private int privateField = 11;
Exception in thread "main" ognl.NoSuchPropertyException: com.xs.Field.privateField
at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:151)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2210)
at ognl.ASTProperty.getValueBody(ASTProperty.java:114)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at ognl.SimpleNode.getValue(SimpleNode.java:258)
at ognl.Ognl.getValue(Ognl.java:494)
at ognl.Ognl.getValue(Ognl.java:644)
at ognl.Ognl.getValue(Ognl.java:702)
at ognl.Ognl.getValue(Ognl.java:672)
at com.xs.OgnlAccess.main(OgnlAccess.java:14)
可以看到 publicField字段正常输出,privateField报错。可见有访问权限的字段,无需getter方法,Ognl找不到getter方法会去直接访问字段;对于没有访问权限的字段则不能直接访问。
给privateField添加getter方法:
class Field{
public int publicField = 10;
private int privateField = 11;
public int getPrivateField() {
return privateF
访问都正常了。OGNL中$、%、#、{}、^、$ 标签的使用简介
OGNL中$号的使用
1..在国际化资源文件中,引用OGNL表达式
2..在struts.xml文件中,引用OGNL表达式
OGNL中%号的使用
1..使用%{}可以取出保存在值堆栈中的Action对象,直接调用它的方法
2..如果Action继承了ActionSupport,那么在页面标签中可以使用%{getText('key')}获取国际化信息
OGNL中#号的使用
OGNL中的#号可以取出堆栈上下文中存放的对象
用于按request&&session&&application顺序访问其属性
#attr.userName相当于按顺序从三个范围读取userName属性直到找到为止
包含当前HttpServletRequest的属性的Map
#request.userName相当于request.getAttribute(&userName&)
包含当前HttpSession的属性的Map
#session.userName相当于session.getAttribute(&userName&)
application
包含当前应用的ServletContext的属性的Map
#application.userName相当于application.getAttribute(&userName&)
parameters
包含当前HTTP请求参数的Map
#parameters.id[0]相当于request.getParameter(&id&)
利用投影获取属性
利用投影获取List中对象的username属性时,其中{}表示的是一个集合
stus.{username}就表示将suts中所有的username属性取出组成一个新的列表
利用选择获取属性
OGNL表达式是很灵活的,可以同时使用选择技术与投影技术获取属性
使用选择技术时,#this代表当前元素,问号?是把所有满足条件的元素都取出来。
上箭头^是开始的意思,即取符合条件的数据索引中第一条数据,所以stus.{^#this.grade&=60}.{username}输出的是[张三]
注意,此时输出文本中包含中括号,这表示它是一个列表。
而stus.{?#this.grade&=60}.{username}[0]输出的是张三,是字符串,二者是不同的。
美元符号$是结束的意思,即取符合条件的数据索引中最后一条数据,所以stus.{$#this.grade&=60}.{username}输出的是[王五]
这三个符号:问号、上箭头、美元符所返回的都是List博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)ognl-界面数据绑定
编辑:www.fx114.net
本篇文章主要介绍了"ognl-界面数据绑定 ",主要涉及到ognl-界面数据绑定 方面的内容,对于ognl-界面数据绑定 感兴趣的同学可以参考一下。
这东西有需要的时候再来研究吧。。。
import java.util.*;
import ognl.O
import ognl.OgnlE
public class OgnlTest {
public static void main(String[] args) {
User user = new User();
user.setId(1);
user.setUsername("hello");
user.setPassword("nihao");
Object o1 = Ognl.getValue("id", user);
Object o2 = Ognl.getValue("username", user);
Object o3 = Ognl.getValue("password", user);
System.out.println(o1 + "-" + o2 + "-" + o3);
// 访问数组、集合
System.out.println("// 访问数组、集合");
System.out.println(Ognl.getValue("str", user));
// 6、直接调用静态方法
System.out.println("// 6、直接调用静态方法");
System.out.println(Ognl.getValue(
"@entity.User_test@say(username+'&OK&')+',nihao'", user));// 这是一个很神奇的玩意
// 7、 访问复杂的对象
System.out.println("// 7、 访问复杂的对象");
Dept dept = new Dept();
dept.setDeptName("Java教研部");
Emp e1 = new Emp("Tom", 3000.00, dept);
Emp e2 = new Emp("Nick", 7000.00, dept);
Emp e3 = new Emp("Jack", 4000.00, dept);
Emp e4 = new Emp("Mike", 12000.00, dept);
List&Emp& emps = new ArrayList&Emp&();
emps.add(e1);
emps.add(e2);
emps.add(e3);
emps.add(e4);
dept.setEmps(emps);
System.out.println(Ognl.getValue("dept", e1));
System.out.println(Ognl.getValue("dept.deptName", e1));
System.out.println(Ognl.getValue("emps[0].name", dept));
// 8、 创建集合
System.out.println("// 8、 创建集合");
Object o = Ognl.getValue("{1,2,3}", null);
System.out.println(o);
System.out.println(o.getClass().getName());// 返回对象的类名
// 9、创建Map
System.out.println("// 9、创建Map");
Object obj = Ognl.getValue("#{'mm':'MM','nn':'NN'}", null);
// 有个&#&开头
System.out.println(obj);
System.out.println(obj.getClass().getName());
// 10、从不同范围取值
System.out.println("// 10、从不同范围取值");
Map&String, String& ctx = new HashMap&String, String&();
ctx.put("username", "Tarena");
System.out.println(Ognl.getValue("username", ctx, user));// user
System.out.println(Ognl.getValue("#username", ctx, user));// 有&#&ctx
} catch (OgnlException e) {
e.printStackTrace();
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:ognl怎样把jsp页面的值传到action中的集合中的对象的属性_百度知道
ognl怎样把jsp页面的值传到action中的集合中的对象的属性
public class RemunerationAction extends ActionSupport {
private List&RemunerationDetail&
//省略getset方法
public class RemunerationDetail implements java.io.Serializable {
private RemunerationItme remunerationI
我有更好的答案
换种方法呢?如果你只是把集合中对象的ID属性值传到action,在action定义个数组,页面隐藏域name=数组属性名 应该可以吧
采纳率:47%
ognl.NoSuchPropertyException: java.util.ArrayList.remunerationItmeognl.没有这样的属性异常,指的是你的item.riid
属性private List&RemunerationDetail& details;的标准set get方法没有写
页面中收到的是Action中的details,而不是remunerationItme,当然提升上面的异常了。
其他1条回答
为您推荐:
其他类似问题
ognl的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 vue绑定自定义属性 的文章

 

随机推荐