struts2的bean类名首字母和第二个字母都不能大写 否则在set 、get时会报空指针错误(NullPointerException)
原因:
如后台类中有属性String sAdress这个属性。使用eclipse自动生成getsAdress()和setsAdress(String sAdress).注意:生成的方法中属性的首字母没有大写。
页面中会用name="sAdress"传递参数。struts2拦截器会调用后台类中的setSAdress(String sAdress)方法。而后台中没有此方法。
所以会报错。
如果第二个字母大写的话,用eclipse生成get,set方法,就手动把方法名的第一个字母换成大写就好了。
示例如下:
action层:
private List<PConstant> pConstantList;
public List<PConstant> getpConstantList() { // 方法名改为:getPConstantList
return pConstantList;
}
public void setpConstantList(List<PConstant> pConstantList) { // 方法名改为:setPConstantList
this.pConstantList = pConstantList;
}
jsp页面:
<s:select name="displayPosition" label="显示位置" headerKey="" headerValue="选择"
list="pConstantList" listValue="value" listKey="code">
</s:select>
错误如下:
2012-11-21 10:54:32 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
tag 'select', field 'list', name 'displayPosition': The requested list key 'pConstantList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]