Strut2 Value Stack 问题
出于安全考虑,我对URL请求做了一定的加密处理。如XXX.action?user.username=123456 改为了 XXX.action?user.username=abcdef
我在服务器端想解密这串url,其实就是把abcdef解密为123456.
因此,我自己写了一个易做图,希望在易做图中修改value stack 中user.username的值。
现在遇到了一个很奇怪的问题。
如果action中有username这个字段,那我使用value stack 中的setValue 方法,即setValue("username","123456"),这样是没问题的。
但如果action 中有user 这个对象,user对象中有username这个字段,此时我用setValue("user.username","123456"),就会报错。
错误就是
target is null for setProerpty(null, "username",???)
Error setting expression 'user.username' with value '123456' --------------------编程问答-------------------- 它不能识别user.username的,想当然了。
那你就先setValue("username","123456")
然后再user.setUsername不行么。 --------------------编程问答-------------------- 为什么不能识别user.username呢?API上写的是setValue(String expr, Object obj)expr是EL表达式,为什么支持不了ognl表达式呢?
你的方法我不是特别看得懂。能详细解释下吗? --------------------编程问答--------------------
为什么不能识别user.username呢?API上写的是setValue(String expr, Object obj)expr是EL表达式,为什么支持不了ognl表达式呢?
你的方法我不是特别看得懂。能详细解释下吗? --------------------编程问答-------------------- 他的意思是易做图不会解析user.username,易做图分为ACTION之前的易做图和ACTION之后的易做图,以String result = invocation.invoke(); 为分界。你的需求是前一种,即在ACTION执行之前改变VALUE STACK的值,在所以模型是这样的
ActionContext context = ActionContext.getContext();
ValueStack vs = context.getValueStack();
vs.set("user.username", "123456");
String result = invocation.invoke();
望受用 --------------------编程问答-------------------- 给User添加构造方法
补充:Java , Web 开发