0

我写了以下代码:

动物.java

package com.MyPack;

public class Animal 
{
    private String name;

    /* getter and setter methods */
}

动物园.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}但它会导致错误。

4

1 回答 1

0

我认为代码:

<jsp:getProperty name="zoo" property="${zoo.address}" />

应该:

<jsp:getProperty name="zoo" property="address" />

此外,我看不到您${zoo.animal.name}在 JSP 中的何处编写了 EL,错误堆栈跟踪也会有所帮助。

编辑

您不能在不评估表达式EL的属性中使用 s ,因为它需要类中属性的实际名称。此外,即使它进行了评估,它的属性属性也将是.property="${zoo.address}"Zooproperty="${zoo.address}"property="Bannerghatta"

所以我的建议是要么使用EL将地址显示为 ( ${zoo.address}) ,要么使用标准操作将地址显示为<jsp:getProperty name="zoo" property="address" />,你不能同时使用两者。

我强烈建议通过以下教程来很好地掌握ELJSP 标准操作的概念:

  1. JSP 和 Java Bean
  2. JSP 表达语言又名 JSP EL
于 2013-02-08T08:30:59.500 回答