java继承与JSTL
我想使用jstl 1.2在jsp中访问一个java类继承的属性: 爪哇: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
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}