java继承与JSTL

java继承与JSTL,java,jsp,jstl,Java,Jsp,Jstl,我想使用jstl 1.2在jsp中访问一个java类继承的属性: 爪哇: public class LigneDeclarationBean { private ELigneDeclaration ligneDecla; private ETypeFormulaire typeForm; ... public ELigneDeclaration getLigneDecla() { return ligneDecla; } public class

我想使用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;
    }
}
JSP:

<%
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} 

${ligneDecla.ligneDecla.sLibelle}
错误消息:

消息:“package.eligndeclaration”类没有 没有“sLibelle”属性

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

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


这是EL的一个特殊情况,因为getter是
getSLibelle()
,解析器似乎无法理解字段是小写还是大写。

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


这是EL的一个特殊情况,因为您的getter是
getSLibelle()
,解析器似乎无法理解字段是小写还是大写。

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

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

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

(您的getter方法声明名称上有大写字母
S
)。您可以使用Bozho的解决方案或修复getter方法的命名。

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

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

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

(您的getter方法声明名称上有大写字母
S
)。您可以使用Bozho的解决方案或修复getter方法的命名。

我已经尝试过您的解决方案和Elite绅士的解决方案。为了准确起见,我将输入准确的类名。我的getter/setter是由eclipse生成的,在没有继承的情况下它可以正常工作。确切地说,有两种语法:一种用于继承属性,一种用于直接属性,所以这里的解决方案是:${ligneDecla.ligneDecla.SLibelle}我已经尝试过你的解决方案和Elite绅士的解决方案。为了准确起见,我将输入准确的类名。我的getter/setter是由eclipse生成的,在没有继承的情况下可以正常工作。确切地说,有两种语法:一种用于继承属性,一种用于直接属性,所以这里的解决方案是:${ligneDecla.ligneDecla.SLibelle}确切地说,有两种语法:一种用于继承属性,一个用于直接属性,所以这里的解决方案是:${ligneDecla.ligneDecla.SLibelle}确切地说,有两种语法:一种用于继承属性,一种用于直接属性,所以这里的解决方案是:${ligneDecla.ligneDecla.SLibelle}