原文链接:http://blog.csdn.net/qimiguang/article/details/7934660
1、
在访问Actoin,向Action进行传值的时候,如果OgnlAction中是这么定义的:
private String username(set get 方法)
private String password(set get 方法)
那么想要往username、password中传值时,可以这么写url地址: http:www.xxxxx/ognl/ognl.action?username=u&password=p; 用这种方式进行传值,那么在ognl.jsp页面中可以用<s:property value="username"/>进行访问值栈中的内容,没有任何问题
但是如果在OgnlAction中又定义了一个:private User user; 以及User的get、set方法,使用<s:property value="user"/>依然访问不到,因为如果采用dominModel的方式进行传值,必须:http:www.xxxxx/ognl/ognl.action?username=u&password=p&user.age=18;这样 struts2才会在Action中帮助我们new一个User对象,然后把值放进去,但是必须要有User空的构造方法。如果依然使用http:www.xxxxx/ognl.action?username=u&password=p;(即没有往User中传值)的方式进行传值,那么在Action中必须手动的初始化User对象,即定义Private User user = new User()时手动调用new()方法;这样同样可以得到User对象。
Ognl:Object Graph Navigation Language
Ognl中如果没有这个值,或者是取错了,会不显示,但是不报错
2、首先在index.jsp中访问url为:http://localhost:8080/Struts2_1900_OGNL/ognl.action?username=u&password=p&cat.friend.name=oudy&user.age=18
然后访问struts.xml
它直接include了ognl.xml:
所以访问OgnlAction:
User:
Dog:
Cat:
S:
返回到ognl.jsp页面:
ognl.jsp页面在浏览器端的显示:
点击Debug后的value stack: