日期:2014-05-18  浏览次数:20641 次

Struts2后台获取input的值,大小写无区别?

<tr>
<td width="13%" height="38" class="top_hui_text"><span class="login_txt">管理员:&nbsp;&nbsp; </span></td>
<td height="38" colspan="2" class="top_hui_text"><input name="adminname" class="editbox4" value="" size="20">                            </td>
</tr>
<tr>
<td width="13%" height="35" class="top_hui_text"><span class="login_txt"> 密 码: &nbsp;&nbsp; </span></td>
<td height="35" colspan="2" class="top_hui_text"><input name="password2" class="editbox4" type="password" size="20" >
<img src="images/luck.gif" width="19" height="18"> </td>
</tr>


上面是登陆的两个input 一个name是 adminname 一个是password2

但是后台定义的是


private String Adminname;
private String Password2;

查找的时候使用的也是大写
login2 = loginService.login2(Adminname, Password.createPassword(Password2));


上面 代码登陆正常,Debug的时候,也能获取到值,请问是为什么呢?
难道不区分大小写嘛?

------解决方案--------------------
这是由你的set和get方法决定的。set+name属性值(根据你提交的name属性的第一个字母转成大写)能找到就为执行里面的方法所以你只要set方法里是给你的Admin赋值那么就无所谓大小写了。
但是如果你把admin在后台变成aDmin那么struts2在在调用的时候就会调用你的setADmin,可是根据你的admin属性得到的应该是setAdmin这样的话就会报出NoSuchMethodException了
------解决方案--------------------
action得到页面的值是通过setAdminname()。。。
你看看这一块
------解决方案--------------------
引用:
这是由你的set和get方法决定的。set+name属性值(根据你提交的name属性的第一个字母转成大写)能找到就为执行里面的方法所以你只要set方法里是给你的Admin赋值那么就无所谓大小写了。
但是如果你把admin在后台变成aDmin那么struts2在在调用的时候就会调用你的setADmin,可是根据你的admin属性得到的应该是setAdmin这样的话就会报出NoSuchMethodE……

所以你admin写成Admin它的set方法都是setAdmin自然就匹配上了
------解决方案--------------------
你HttpServletRequest.getParameter("adminname ");括号里面应该是小写的 和input表单一致的;
一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。
------解决方案--------------------
1楼是对的,
你前台定义 adminname

后台定义Adminname

set的也是setAdminname
所以无区别。
------解决方案--------------------
你admin写成Admin它的set方法都是setAdmin自然就匹配上了,无区别