代码之家  ›  专栏  ›  技术社区  ›  jayjaypg22

java继承和JSTL

  •  1
  • jayjaypg22  · 技术社区  · 14 年前

    我想在使用jstl 1.2的jsp中访问我的一个java类继承的属性:

    爪哇语:

    public class LigneDeclarationBean  {
    
        private ELigneDeclaration ligneDecla;
        private ETypeFormulaire typeForm;
    
    ...
    
        public ELigneDeclaration getLigneDecla() {
        return ligneDecla;
    }
    
        public class ELigneDeclaration extends ZELigneDeclaration implements Serializable {
    ...
        }
    
    public class ZELigneDeclaration implements Serializable {
       private String sLibelle;
    ...
       public String getSLibelle() {
            return sLibelle;
        }
    }
    

    <%
    List<LigneDeclarationBean> listelignes = (List) request.getAttribute("listeLignes");
                    // Affichage de la liste des ligneDeclas
       for (int i = 0; i < listelignes.size(); i++) {
          LigneDeclarationBean ligneDecla = listelignes.get(i);
    %>
        ${ligneDecla.ligneDecla.sLibelle} 
    

    错误消息:

    没有属性“sLibelle”。

    但是在scriptlet中它工作得很好 <%=ligneDecla.getLigneDecla().getSLibelle()%> 返回正确的值。这是jstl的限制吗? 是否有其他方法使用此标记库访问我的属性?这个项目不使用表示框架,jstl似乎是我唯一可以使用的标记库。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Bozho    14 年前

    那可能是因为开头的一个字母。试着把它称为 ${A.SLibelle} . (即大写的两个字母)。

    EL的案子有点特殊,因为你的杀手 getSLibelle() ,解析器似乎无法理解字段是小写还是大写。

        2
  •  0
  •   Buhake Sindi Tesnep    14 年前

    您的问题出现在getter方法中:

    创建getter方法的正确方法 sLibelle 是:

    /**
     * @return the sLibelle
     */
    public String getsLibelle() {
        return sLibelle;
    }
    

    S 在getter方法声明名中)。您可以使用Bozho的解决方案或修复getter方法的命名。