关于JSP set属性

时间:2013-02-08 07:38:45

标签: jsp

我写了以下代码:

Animal.java

package com.MyPack;

public class Animal 
{
    private String name;

    /* getter and setter methods */
}

Zoo.java

package com.MyPack;

public class Zoo 
{   
    private String address;
    private Animal animal;

    /* Getter and Setter Method */
}

JSP

<%@ 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}从动物类中打印名称,但是它会导致错误。

1 个答案:

答案 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标准操作的概念:

  1. JSP and Java Beans
  2. JSP Expresssion Language aka JSP EL