jsp页面如下所示:(部分)
         <logic:iterate id="tags" name="tagList">
           <tr>
                <td align="center"><a href="">${tags.tName}</a></td>
          </tr>
        </logic:iterate>如果这样的话,页面报的错误为:
        javax.el.PropertyNotFoundException: Property 'tName' not found on type entity.Tags
说我的实体类里面没有tName这个属性。
 下面是实体类的代码(部分):
        private String tName;
        public String getTName() {
return tName;
}
public void setTName(String name) {
tName = name;
}
Action如下:
    public class TagAction extends DispatchAction{ private TagBiz tagBiz=new TagBiz();

public ActionForward toList(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws IOException  {

   List list=tagBiz.search();
   request.setAttribute("tagList", list);

   return mapping.findForward("index");
}
}
为什么会这样?

解决方案 »

  1.   

    TagBiz如下:
        public class TagBiz {
            private TagDAO tagDAO=new TagDAO();
            public List search()
    {
    List list=tagDAO.search();
    return list;
    }
    }
    TagDAO如下:
         public class TagDAO extends BaseJdbcDAO{
    Connection conn=null;
    PreparedStatement pstmt=null;
    ResultSet rs=null;

    public List search()
    {
    List list=new ArrayList();
    String sql="select * from tag";
    try {
    conn=this.getConn();
    pstmt=conn.prepareStatement(sql);
    rs=pstmt.executeQuery();
    while(rs.next())
    {
       Tags tag=new Tags();
       tag.setTId(rs.getInt("t_id"));
       tag.setTName(rs.getString("t_name"));
       tag.setTCount(rs.getInt("t_count"));
       list.add(tag);
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    finally
    {
    this.closeAll(conn, pstmt, rs);
    }
    return list;
    }
      

  2.   


    <c:forEach var="tags" items="${requestScope.tagList}">
    <tr> 
             <td align="center"> <a href="">${tags.tName} </a> </td> 
     </tr> 

    </c:forEach>
    水平有限,没看出代码有问题。用c标签试下,struts的logic标签不熟。
      

  3.   

    怀疑logic标签都没有取到值。
    把 ${tags.tName}改成
    <bean:write name="tags" property="tName" />
    试试有没有值取出。
      

  4.   

    以上两位的方法我都试了。结果还是一样。不知道怎么回事。郁闷了一天了。c:forEach和bean:都试了
      

  5.   

    首先肯定楼主的代码没有一点儿问题,之所以会有异常楼主应该是遇到了Struts标签的一些小BUG,注意你定义的实体变量是tName,生成的getter和setter方法是getTName和setTName这样和容易混你,虽然我们自己能够清楚的分辨出来,但是由于标签的一些小BUG,所以可能不能准确的解析楼主定义的tName属性,之所以这样认为纯属个人经验,建立楼主将tName改成tagName等好区分大小写的属性名字。希望对楼主有所帮助
      

  6.   

     private String tName; 
     public String getTName() { 
        return tName; 

    public void setTName(String name) { 
    tName = name; 

    get,set方法是手写的还是工具生成?建议用工具自动生成试一下。
      

  7.   

    恩恩,8#谢谢你啊。郁闷了一天了。终于出来了。你说的没错。是bug。
    我现在开始怀疑了。既然这个东西还不成熟,拿出来害人,
      

  8.   

    楼主这个问题以前遇到过
    你的变量(tName)的命名不符合javabean的命名规范