我写了以下代码:
package com.MyPack;
public class Animal
{
private String name;
/* getter and setter methods */
}
package com.MyPack;
public class Zoo
{
private String address;
private Animal animal;
/* Getter and Setter Method */
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="animal" class="com.MyPack.Animal" scope="request">
<jsp:setProperty name="animal" property="name" value="Tiger" />
</jsp:useBean>
<jsp:useBean id="zoo" class="com.MyPack.Zoo" scope="request">
<jsp:setProperty name="zoo" property="address" value="Bannerghatta" />
<jsp:setProperty name="zoo" property="animal" value="${animal}" />
</jsp:useBean>
<jsp:getProperty name="zoo" property="${zoo.address}" />
</body>
</html>
我正在使用EL来打印地址,我正在尝试使用${zoo.animal.name}
从动物类中打印名称,但是它会导致错误。
答案 0 :(得分:0)
我认为代码:
<jsp:getProperty name="zoo" property="${zoo.address}" />
应该是:
<jsp:getProperty name="zoo" property="address" />
此外,我没有看到你在JSP中编写EL ${zoo.animal.name}
的位置,错误堆栈跟踪也会有所帮助。
您不能在属性EL
中使用property="${zoo.address}"
s它不评估表达式,因为它需要Zoo
类中属性的实际名称。此外,即使评估property="${zoo.address}"
,它也会将属性属性设为property="Bannerghatta"
。
所以我的建议是使用EL
将地址显示为(${zoo.address}
)或使用标准操作将地址显示为<jsp:getProperty name="zoo" property="address" />
,不能将两者混合使用。< / p>
我强烈建议您仔细阅读以下教程,以便更好地掌握EL
和JSP标准操作的概念: