我想在嵌套的Java Object结构中通过给定的Path String设置值。 如果不存在collction属性,则属性应自动实例化:
public class A {
List<B> bs;
// getter/setter
}
public class B {
String b1;
String b2;
// getter/setter
}
public Object setValueForPath(String path, Object value){
// magic starts
// Set Value for Path
// automatically instantiate Objects if nessesary
}
A result = setValueForPath("bs[0].b1", "test") // return full Object structure
assertEqual(result.getBbs().get(0).getB1(), "test");
我该如何解决这个问题?
答案 0 :(得分:0)
您可以使用OGNL的序列运算符,
来完成此操作,但它会使您的ognl表达式更难以阅读。
A a = new A()
Ognl.setValue("bs.add(0, new com.full.qualified.package.B()), bs[0].b1" a, "test")
assertEquals("test", a.getBbs().get(0).getB1())