从页面中提交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)
我在Action 中使用public修饰user对象就可以了!
public User user;
是不是必须使用public 修饰javabean 呢?而你的示例代码中却是使用private修饰的.
后来我尝试初始化user, 代码修改为: private User user = new User();运行没问题.
为什么private User user;却不行?为什么public User user; 和 private User user = new User();可以运行通过?
请解释一下,表单数据如何被封装为POJO的过程!?
[b]问题补充:[/b]
其实只是按照我上面的写法完全没有问题
User只有id,username,password三个属性
但是如果User对象中包含类另外的一个对象,如Authority(权限)
Authority包含了id和name两个属性
再按照上面的写法就会出现上面提到的异常,不知道各位有没有遇到过
[b]问题补充:[/b]
visoin你能不能说的具体一点呢。或者举例说明一下也行