jsp: getProperty, предоставляющий «Согласно TLD, тег jsp: getProperty должен быть пустым, но не является» исключением - PullRequest
1 голос
/ 29 июня 2011

У меня есть простая html-страница, где я передаю два значения: имя (String) и количество ночей (int) на страницу jsp. Там я использую тег jsp:useBean и тег jsp:setProperty. Когда я заменил <%= myRes.getName() %> на <jsp:getProperty name="myRes" property="name">, он выдает длинный отчет об исключениях. Но когда я дважды перезагружаю страницу, она дает правильный вывод. Отчет об исключениях приведен ниже.

org.apache.jasper.JasperException: /hotel_jsp_bean_one.jsp(13,30) According to TLD, tag jsp:getProperty must be empty, but is not
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:132)
    org.apache.jasper.compiler.Parser.parseBody(Parser.java:1631)
    org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1002)
    org.apache.jasper.compiler.Parser.parseGetProperty(Parser.java:905)
    org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1132)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1449)
    org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:197)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:339)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

Мой класс бобов:

package hotel;

public class Hotel
{
    private String name;
    private int nights;

    public Hotel()
    {
        this.name = "<NOT SPECIFIED>";
        this.nights = -1;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return this.name;
    }

    public void setNights(int nights)
    {
        this.nights = nights;
    }

    public int getNights()
    {
        return this.nights;
    }

Тогда моя первая HTML-страница:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hotel Califona Reservation</title>
</head>

<body>
    <h2 align="center">Welcom To The Hotel Califonia</h2>
    <br/>
    <br/>
    <form method="post" action="hotel_jsp_bean_one.jsp">
        <label>Enter your name : <input type="text" name="name"/>
        <br/>
        <label>How many nights : </label><select name="nights">
                                            <option value="1">1</option>
                                            <option value="2">2</option>
                                            <option value="3">3</option>
                                            <option value="4">4</option>
                                          </select>
        <br/>
        <input type="submit" name="submit" value="Reserve"/>
    </form> 
</body>
</html>

Тогда моя последняя страница JSP:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hotel Califonia Reservation</title>
</head>

<jsp:useBean id="myRes" class="hotel.Hotel" scope="page"/>
<body>
    <jsp:setProperty name="myRes" property="*"/>

    <h3 style="color:#0000FF"><jsp:getProperty name="myRes" property="name"> is staying for <jsp:getProperty name="myRes" property="nights"> nights</h3>
</body>
</html>

Пожалуйста, прости меня за любые неудобные ошибки, которые я упустил. Любая помощь будет принята с благодарностью. Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 29 июля 2011

Это недопустимо:

<jsp:getProperty name="myRes" property="name"> is staying for <jsp:getProperty name="myRes" property="nights">

Оно должно быть:

<jsp:getProperty name="myRes" property="name"/> is staying for <jsp:getProperty name="myRes" property="nights"/>

Обратите внимание на закрытие / в конце каждого getProperty.

0 голосов
/ 29 июля 2011

Я столкнулся с этой проблемой сегодня в классе JSP / Servlets. Я считаю, что решение этой проблемы заключается в том, чтобы поставить /, чтобы закрыть тег на вашей последней странице JSP.

Я пропустил закрытие тега, и после ввода / в моя страница работала безупречно.

...