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