楼主是说封装类,只有属性,没有对这些属性的get set方法,然后也能打印这些属性的值
不知道是不是版本的原因,我本地是2.1.6的版本,我必须设置封装类属性的get set 方法,并且在Action中也要有封装类的get和set方法才能打印值

解决方案 »

  1.   

    原来,封装类虽未显示继承其他类,也没有写get、set,但是Struts2.3为我们默认写了get、set方法。
      

  2.   

    原来,封装类虽未显示继承其他类,也没有写get、set,但是Struts2.3为我们默认写了get、set方法。
    哦,楼主再哪边找到的,分享下
      

  3.   

    原来,封装类虽未显示继承其他类,也没有写get、set,但是Struts2.3为我们默认写了get、set方法。
    哦,楼主再哪边找到的,分享下
    自己测试的。
      

  4.   

    原来,封装类虽未显示继承其他类,也没有写get、set,但是Struts2.3为我们默认写了get、set方法。
    我怎么记得好像不写get set的话就是利用反射技术设置的呢~
      

  5.   

    原来,封装类虽未显示继承其他类,也没有写get、set,但是Struts2.3为我们默认写了get、set方法。
    我怎么记得好像不写get set的话就是利用反射技术设置的呢~
    当时第一想到的是反射,但是感觉默认写get、set不更方便吗?我也具体没找到相关文档。
      

  6.   

    原来,封装类虽未显示继承其他类,也没有写get、set,但是Struts2.3为我们默认写了get、set方法。
    我怎么记得好像不写get set的话就是利用反射技术设置的呢~
    我想错了,Struts又不参与编译,不可能默认写上get、set。就剩下反射完成传值的可能了。
      

  7.   

    我记得Struts不管是用类对象还是普通变量都是需要提供set/get方法的啊。类的话,需要在类中提供set/get方法啊。是不是楼主类中属性是public修饰啊,或者是action中的类变量是public,你确定是private修饰吗,如果不是private修饰,改成private看看
      

  8.   

    你是不是在spring context.xml 文件中注解设置了,如果没有注解的话
    structs2 是必须通过 get set  找寻设定的值的
      

  9.   

    感谢,正是public的原因。
    可是为什么public可以不写set、get呢?
      

  10.   

    感谢,正是public的原因。
    可是为什么public可以不写set、get呢?
    因为struts本来就是根据反射来进行的。类是可以通过反射得到,那得到类了自然就能得到对象,属性是public是不是直接可以通过对象.属性名来进行操作了,如果是private那就不能了,只能通过对应的set/get方法来进行操作咯。
      

  11.   

    感谢,正是public的原因。
    可是为什么public可以不写set、get呢?
    因为struts本来就是根据反射来进行的。类是可以通过反射得到,那得到类了自然就能得到对象,属性是public是不是直接可以通过对象.属性名来进行操作了,如果是private那就不能了,只能通过对应的set/get方法来进行操作咯。
    可是反射也能拿到私有字段并修改吧,Struts没有这么做,而希望开发人员通过使用get、set实现?
      

  12.   

    感谢,正是public的原因。
    可是为什么public可以不写set、get呢?
    因为struts本来就是根据反射来进行的。类是可以通过反射得到,那得到类了自然就能得到对象,属性是public是不是直接可以通过对象.属性名来进行操作了,如果是private那就不能了,只能通过对应的set/get方法来进行操作咯。
    可是反射也能拿到私有字段并修改吧,Struts没有这么做,而希望开发人员通过使用get、set实现?
    属性私有,你确定能通过对象直接进行修改??那私有和公开还有什么区别吗??
      

  13.   

    感谢,正是public的原因。
    可是为什么public可以不写set、get呢?
    因为struts本来就是根据反射来进行的。类是可以通过反射得到,那得到类了自然就能得到对象,属性是public是不是直接可以通过对象.属性名来进行操作了,如果是private那就不能了,只能通过对应的set/get方法来进行操作咯。
    可是反射也能拿到私有字段并修改吧,Struts没有这么做,而希望开发人员通过使用get、set实现?
    属性私有,你确定能通过对象直接进行修改??那私有和公开还有什么区别吗??
    这个你可以搜索,java反射设置私有变量
      

  14.   

    感谢,正是public的原因。
    可是为什么public可以不写set、get呢?
    因为struts本来就是根据反射来进行的。类是可以通过反射得到,那得到类了自然就能得到对象,属性是public是不是直接可以通过对象.属性名来进行操作了,如果是private那就不能了,只能通过对应的set/get方法来进行操作咯。
    可是反射也能拿到私有字段并修改吧,Struts没有这么做,而希望开发人员通过使用get、set实现?
    属性私有,你确定能通过对象直接进行修改??那私有和公开还有什么区别吗??
    这个你可以搜索,java反射设置私有变量
    搜素倒是没有搜,自己直接写了一个简单的测试代码,还是相信代码,结果,长见识了,确实可以。但我感觉如果这样可以的话,可以算得上是java的一个bug了。
    如果是这样的话,那就有可能是struts想让开发者提供get/set方法来实现了。谢啦。又学到了
      

  15.   

    感谢,正是public的原因。
    可是为什么public可以不写set、get呢?
    因为struts本来就是根据反射来进行的。类是可以通过反射得到,那得到类了自然就能得到对象,属性是public是不是直接可以通过对象.属性名来进行操作了,如果是private那就不能了,只能通过对应的set/get方法来进行操作咯。
    可是反射也能拿到私有字段并修改吧,Struts没有这么做,而希望开发人员通过使用get、set实现?
    属性私有,你确定能通过对象直接进行修改??那私有和公开还有什么区别吗??
    这个你可以搜索,java反射设置私有变量
    搜素倒是没有搜,自己直接写了一个简单的测试代码,还是相信代码,结果,长见识了,确实可以。但我感觉如果这样可以的话,可以算得上是java的一个bug了。
    如果是这样的话,那就有可能是struts想让开发者提供get/set方法来实现了。谢啦。又学到了
    还是要感谢你。另外,封装又不是封闭,提供拿到私有满足特殊需求。开发者不会故意破坏封装类,这也就没破坏安全性。