日期:2014-05-20  浏览次数:20695 次

Struts中jsp中表单input的name赋值与formBean里的私有成员关系
其实就是想知道填装的具体细节。
比如

jsp的form中有这么一个input
HTML code

<input type="text" name=userName>  //1




对应ActionForm中有这么一个私有成员
Java code

private String UserName;   //2
public String getUserName() {
      return UserName;
    }
    public void setUserName(String userName) {
        UserName = userName;
    }



这里1,2前面标注的两个属性名直接是什么关系,必须一致吗?我有试过有的时候不一致也是可以的。

我试着读了下源码,发现太复杂,没看懂。。。。

初学Struts,求高人解释。

------解决方案--------------------
其实struts这个用的是反射的原理。 lz 1中的name 与 2中fromebean里的私有属性的名字不一定要相同。但是私有属性的set方法的名字 必须是 1中 name首字母大写然后加 set。如 1中如果是<input type="text" name=userName> 那么2中formbean中私有属性 名字可以不是userName 但是 必须要有一个setUserName。 
 原因是:struts得到页面input的name属性的值,内部处理调用set+name的值(首字母变大写)这个set方法设置值到formbean里。简单来说就是反射原理。
------解决方案--------------------
探讨
必须一致吗?我有试过有的时候不一致也是可以的。

------解决方案--------------------
探讨
其实struts这个用的是反射的原理。 lz 1中的name 与 2中fromebean里的私有属性的名字不一定要相同。但是私有属性的set方法的名字 必须是 1中 name首字母大写然后加 set。如 1中如果是<input type="text" name=userName> 那么2中formbean中私有属性 名字可以不是userName 但是 必须要有一个setUserName。
原……

------解决方案--------------------
ActionForm里UserName要小写哦