Strut2中JavaBean规范

困惑了两个多小时的问题,最后发现罪魁祸首竟然是一个 大小写问题:
Items类:
private int mId;
public int getMId() {
   return mId;
}
public void setMId(int mId) {
   this.mId = mId;
}

action类:
public Items items;
public Items getItems() {
   return items;
}
public void setItems(Items items) {
   this.items = items;
}

注意:此处get方法最好写上,否则可能会出现丢值的问题。

页面用EL表达式取值:
${items.mId }


控制台错误信息:
严重: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'mId' not found on type org.zjkh.homepage.dao.pojo.Items
	at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
	at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
	at javax.el.BeanELResolver.property(BeanELResolver.java:279)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)


网上也有不少网友出现了类似问题,不过说法各种各样。我也尝试了,都失败了。
我的解决办法:
将“mId”改成“mid”,当然get、set方法也要记得改哦,好了,问题就这样解决了!
实在想不通,记得以前这样是可以的,难道JavaBean的规范要求更严格了,不允许开头有俩大写字母?就在我解决这个问题的同时,同事也出现了类似问题,注入DAO时spring配置文件编译时老是提示错误:“not property set method ...”,也折腾了好半天,所有可能的隐患都检查了,都没成功。最终把他的DAO类名改了一下“MMxxxDAO”改成“MxxxDAO”就好了,看来还是跟他的命名规范有关,有时间得好好研究一下它。

你可能感兴趣的:(java,DAO,spring,jsp,servlet)