楼主是想从页面上拿数据,在action中提交?那你就每次绑定一下数据呗,在提交给action前,用js将属性值组装成对象啊,应该没有问题。

解决方案 »

  1.   

    我怎么感觉是BDaWjxx类中属性获取的问题呢?
      

  2.   

    楼主是想从页面上拿数据,在action中提交?那你就每次绑定一下数据呗,在提交给action前,用js将属性值组装成对象啊,应该没有问题。
      

  3.   

    url传递参数:http://localhost:8888/Strust2_1.2_Action/user/user_add?user.name=abc&user.password=22
    jsp页面中获取参数:在jsp页面中直接用${user.name}和${user.password}就可以获取到传进来的abc和22//UserAction.java
    import com.strus2.model.UserModule;
    public class UserAction extends ActionSupport {
    private UserModule user; public void setUser(UserModule us) {
    user = us;
    }

    public User getUser() {
    return user;
    }
    }//UserModule.java
    package com.strus2.model;
    public class UserModule {
    private String name; 
    private String password;

    public void setName(String str) {
    name = str;
    }

    public String getName() {
    return name;
    }

    public void setPassword(String str) {
    password = str;
    }

    public String getPassword() {
    return password;
    }
    }
      

  4.   

    这只是后台对应前台数据的一种方式,struts是通过一个Method拦截器实现的,类似于以前java web的request.getParamter的作用。关于你问的问题:
    .更新某个dawjxxModel的时候,如果我在页面上面没有放置某个属性值的绑定,那我 在action方法里面就取不到指定属性的值。
    没错,是这样的,Action中的对象会自动对应你提交的属性,比如对象有5个属性,你只用修改3个,那你提交3个就OK了,其他的在后台接收到的会是一个null值。你可以把它理解成一个“容器对象”,你哪个属性有值你自己肯定是清楚的,这个对象只是负责去装你前台传过来的修改数据。一般更新是先通过id  load出原对象(更新的时候id无论如何都要传过来,比如通过隐藏域),然后你写这样的代码:bean.setXxx(bean1.get(xxx));  bean1就是你前台传的不完整对象,你直接取你前台填的属性就OK了,明白了吧。
      

  5.   

    你不要因为属性值多而不去写,你可以把不特定的属性隐藏(hidden)起来.
      

  6.   

    嗯 我明白可以这样处理,我最后也说了,就是如果属性太多了的话。action set太多属性了。有没有折中的办法。
      

  7.   

    我还以为是添加,更新就可以啊,只要把ID传过来。我还以为是添加,更新就可以啊,只要把ID传过来。我问题的重点是,有没有什么办法 页面不放那么多隐藏域,后台也不需要重新load对象再set属性。问问大家平常开发中有没有什么节省代码量的处理方法。
      

  8.   

    我还以为是添加,更新就可以啊,只要把ID传过来。我还以为是添加,更新就可以啊,只要把ID传过来。我问题的重点是,有没有什么办法 页面不放那么多隐藏域,后台也不需要重新load对象再set属性。问问大家平常开发中有没有什么节省代码量的处理方法。
    只需要放一个id就行了,不可能放所有属性,那样太麻烦。比如页面更新N个对象,你通过隐藏域传N个id,在后台load之后就可以随便取属性了么。关于你说的属性多会set很多遍,这个貌似没有什么好的办法,因为你是选择性修改,你修改的每一个属性只能通过原对象的set方法去赋值。
      

  9.   

    先把值给传过来,然后根据主键id去查询获取这个对象,然后把要更新的属性的值给set进去,在save这个对象,这样可以不。。
      

  10.   

    我还以为是添加,更新就可以啊,只要把ID传过来。我还以为是添加,更新就可以啊,只要把ID传过来。我问题的重点是,有没有什么办法 页面不放那么多隐藏域,后台也不需要重新load对象再set属性。问问大家平常开发中有没有什么节省代码量的处理方法。
    只需要放一个id就行了,不可能放所有属性,那样太麻烦。比如页面更新N个对象,你通过隐藏域传N个id,在后台load之后就可以随便取属性了么。关于你说的属性多会set很多遍,这个貌似没有什么好的办法,因为你是选择性修改,你修改的每一个属性只能通过原对象的set方法去赋值。谢谢,我说的隐藏域是这样的,比如我有一个对象,也许有些属性我不需要更新,在页面上面我就放在那个隐藏域里面,然后action不会再load 而是直接拿着就save了,现在想想客户端是能修改那些东西的。不安全,还是load一下,再每个set一下比较好。