birdnic 2009-05-13 05:06
浏览 199
已采纳

struts2 表单数据如何被封装为POJO的过程

从页面中提交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你能不能说的具体一点呢。或者举例说明一下也行

  • 写回答

1条回答 默认 最新

  • chenli348105874 2009-05-13 14:05
    关注

    jsp里面上的bean和数据库里面的其实是不一样的,而action所做的事情就是把数据库里面的po转化成页面上要的pojo.
    POJO = pure old java object or plain ordinary java object or what ever.

    PO = persisent object

    你直接操作po的话有时候会有问题的 就像你提到的那样
    你可以new一个user出来 然后把po的属性塞给他 这样就得到了1个pojo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序