commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dave Newton <davelnew...@gmail.com>
Subject Re: Is it a bug or mechanism changing of OGNL, could't set and get a bean's property, that the name of the property's sencond character is upper-case?
Date Fri, 02 Nov 2012 05:58:59 GMT
Shouldn't the getter be named "getPName"?

Dave

(pardon brevity, typos, and top-quoting; on cell)
On Nov 2, 2012 1:09 AM, "Maliwei" <mlw5415@gmail.com> wrote:

> As I have desc in the mail title, and see the code below:
>
> /**--------------code start----------**/
> import ognl.Ognl;
> import ognl.OgnlException;
> class Hello {
>     private String pName;
>     public String getpName() {
>         return pName;
>     }
>     public void setpName(String pName) {
>         this.pName = pName;
>     }
> }
>
> public class OgnlTest {
>     public static void main(String[] args) {
>         Hello action = new Hello();
>         action.setpName("pName.Foo");
>         try {
>             Object pName = Ognl.getValue("pName", action);
>             System.out.println(pName);
>         } catch (OgnlException e) {
>             //this will happen when use version 2.7+ and 3.x
>             e.printStackTrace();
>         }
>     }
> }
> /**--------------code end----------**/
>
> According to JavaBeans Spec sec 8.8 "Capitalization of inferred names":
> Thus when we extract a property or event name from the middle of an
> existing Java name, we normally convert the first character to lower case.
> However to support the occasional use of all upper-case names, we check if
> the first two characters of the name are both upper case and if so leave it
> alone. So for example,
> “FooBah” becomes “fooBah”
> “Z” becomes “z”
> “URL” becomes “URL”
> We provide a method Introspector.decapitalize which implements this
> conversion rule.
> String java.beans.Introspector.decapitalize(String name)
> Utility method to take a string and convert it to normal Java variable
> name capitalization. This normally means converting the first character
> from upper case to lower case, but in the (unusual) special case when there
> is more than one character and both the first and second characters are
> upper case, we leave it alone.
> Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays as
> "URL".
>
>
>
>
>
> Best Regards
> Ma Liwei

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message