struts2.1.6是不是不支持action内直接定义对象

从页面中提交User的数据到Action中 Action 写到:
public class HelloWorld extends ActionSupport {
private String name;
private User user;

public User getUser()
{
return user;
}
public void setUser()
{
this.user = user;
}

public String getName() {
return name;
}

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

public String execute() {
name = "Hello, " + name + "!";
return SUCCESS;
}
}

但运行到Action是报一个错,错误信息如下:
2007-9-8 18:42:23 com.opensymphony.xwork2.util.InstantiatingNullHandler nullPropertyValue
严重: Could not create and/or set value back on to object
ognl.NoSuchPropertyException: tutorial.HelloWorld.user [java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class tutorial.HelloWorld with modifiers "private"]
at ognl.OgnlRuntime.setFieldValue(OgnlRuntime.java:1125)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:77)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:132)
at com.opensymphony.xwork2.util.OgnlValueStack$ObjectAccessor.setProperty(OgnlValueStack.java:68)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1629)
但是我换了2.0.14的struts包这个问题就不会出现了,有没有人碰到多这个问题,产生的原因到底是什么啊?

3个回答

换了2.1.6的包之后,把相应的xwork和ognl的包也一并更新了

LZ的代码没啥问题。

public class HelloWorld extends ActionSupport {
private String name;
private User user;
。。。。。。。。
}

对struts2中action的get和set一个对象,一定要使用struts2的converter方法

例如:首先编写User类

之后在你编写的Action类的同个目录下创建了和Action类同名的properties文件 如你创建的HelloWorld-conversion.properties文件

在HelloWorld-conversion.properties文件中填写如下内容:
Element_user=package.User

SET方法没有参数
[code="java"]public void setUser()
{
this.user = user;
} [/code]

我用STRUTS2两年多了,就从来就没有用过什么conversion.properties,
真有那么回事?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问