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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题