Struts1.1中遇到有关Form Bean 的奇怪问题

本文探讨了在使用Struts1.1框架时遇到的一个奇怪Bug:某些属性名会导致JSP异常,无法正确调用FormBean的getter方法。通过实验发现,属性名若以两个及以上的小写字母开头则可以避免该问题。
摘要由CSDN通过智能技术生成

问题:

javax.servlet.jsp.JspException: No getter method for property rUnit of bean org.apache.struts.taglib.html.BEAN

NewForm.java

 

  1. private String rUnit;   
  2.   
  3. public String getRUnit() {   
  4.     return rUnit;   
  5. }   
  6.   
  7. public void setRUnit(String rUnit) {   
  8.     this.rUnit = rUnit;   
  9. }  

 

 

New.jsp

 

运行,抛出上面提到的异常。

上网搜,CSDN找到相同问题的帖子,不过帖子最终也没道出问题的原因。不过帖子中的问题极相似,他的是eDate,我的是rUnit。他是把JSP中的eDate改成EDate就问题去除了。我在想,没道理啊,没有违反JAVA的编码规范啊,为什么要改。翻看前的Form Bean,啊,还真巧,以前的Form Bean中的属性名字都比较“长”的。而且都前面一节都非单字母:officePhone,而没写过oPhone之类的属性名。不会真因为这个吧,那两个字母呢,于是再试。。。。

结果出来了,两个(明显,是两个以上)小写字母打头就没问题。啊,这问题还让人想不明白,struts1.1在内部处理这些名字时应该是有问题的,起码根据JSP中的rUnit这个property名字不能正确地找到Form Bena里面相应的getRUnit()方法。但却能根据officePhone正确找到getOfficePhone()方法。

BUG,一定是个BUG。。。。

 

 

 

以前,相同的写法,运行正常!

 

OldForm.java

 

  1. private String officePhone;   
  2.   
  3. public void setOfficePhone(String officePhone) {   
  4.     this.officePhone = officePhone;   
  5. }   
  6.   
  7. public String getOfficeAddress() {   
  8.     return officeAddress;   
  9. }  

 

 

Old.jsp

 

 

“贴的代码和部分内容在提交后怎么就莫明其妙地消失了??。。。”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值