在bean中有一属性名称为
private String tName;
public String getTName() {
return tName;
}
public void setTName(String name) {
tName = name;
}
在页面中代码操作如下:
 <jsp:useBean id="person" class="com.test.el.Person" scope="session"></jsp:useBean>
   ${person.tName};此时会出现异常如下:
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 118:   </head>
9:   <jsp:useBean id="person" class="com.fit.el.Person" scope="session"></jsp:useBean>
10:   <body>
11:    ${person.tName};
12:   </body>
13: </html>javax.el.PropertyNotFoundException: Property 'tName' not found on type com.fit.el.Person而如果属性的名称为name,对应的get/set方法中都为name,EL中调用时也为name时就没有问题。为什么会这样?谁能把EL操作原理说一下。

解决方案 »

  1.   

    javax.el.PropertyNotFoundException: Property 'tName' not found on type com.fit.el.Person<jsp:useBean id="person" class="com.test.el.Person" scope="session"></jsp:useBean>确定写的没问题
      

  2.   

    jsp:useBean id="person" class="com.fit.el.Person" scope="session"></jsp:useBean>
    ==>
    1.<jsp:useBean id="person" class="com.fit.el.Person" scope="session"/>
    2.或者:
    <jsp:useBean id="person" class="com.fit.el.Person" scope="session">${person.tName}</jsp:useBean>
      

  3.   

    写的绝对没问题。
    wf1006 你这种办法我没有试能不能解决,但如果是从servlet传出来的就不行了。请高手解释一下EL为什么会这样。难道是BUG?
      

  4.   

    没有问题的,试试包名是否对了,是不是操作真正Person对象上去了
      

  5.   

    <jsp:useBean name="person" class="com.test.el.Person" scope="session"></jsp:useBean>
    这样就可以用el取值了!
    <jsp:useBean id="person" class="com.test.el.Person" scope="session"></jsp:useBean>
    这样可以用<%=person.getTname%>!
      

  6.   

    你是对的。用eclipse生成tName的getter是这样的    private String tName = "shit";    public String gettName() {
            return tName;
        }不是getTName(),而是gettName
    用eclipse产生的getter是可以访问的!
      

  7.   

    找到正解了:
    http://blog.csdn.net/liwen19840617/archive/2009/12/23/5060845.aspx
      

  8.   

    问题原因就是:属性getter方法有问题属性    getter     setter
    xName   getxName   setxName
    XName   getXName   setXName   
      

  9.   

    注意了。 还没碰见过这样的问题
     我这自动生成的 gettName 你自动生成怎么会是getTName上面说的对 问题就出在这了
      

  10.   

    这个问题我知道!!
      是你的那个属性(tName)命名不正确!!
    如果你是这样命名的话,调用时就找不到它的get()方法和set()方法!
    记住了!以后命名别一个小写后面就跟一个大写了!!
    如:
    userName
    别命名成
    uName!
      

  11.   

    要明白el表达式的原理是什么!
    它就是根据get()方法和set()方法来找值的!
      

  12.   

    http://blog.csdn.net/liwen19840617/archive/2009/12/23/5060845.aspx这里面解释的很清楚.谢谢了.一是命名要注意,还有工具版本不同生成的也不同!结贴了!