Что означает эта ошибка в JSP? (Неизвестный элемент (rtexpvalue) в атрибуте)

Я получаю эту ошибку при запуске моего приложения в LINE 3 файла jsp. Это связано с моим файлом tld или файлом jsp?

org.apache.jasper.JasperException: /DisplayAllOrders.jsp(3,62) PWC6106: неизвестный элемент (rtexpvalue) в атрибуте.

Файл ДВУ:

 <?xml version="1.0" encoding="UTF-8"?>
 <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"    lns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*, java.text.*, beans.*" %>
<%@ taglib uri="/WEB-INF/tlds/week07_portfolio" prefix="wk07" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<%  if (session.getAttribute("orderList") == null)
{
    throw new ServletException("No order list available");
}

int ctr = 0;
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
0.xsd"> <tlib-version>1.0</tlib-version> <short-name>week07_portfolio</short-name> <uri>/WEB-INF/tlds/week07_portfolio</uri> <tag> <name>DisplayOrders</name> <tag-class>tags.DisplayOrders</tag-class> <body-content>JSP</body-content> <variable> <name-given>order</name-given> <variable-class>beans.Order</variable-class> <declare>true</declare> <scope>NESTED</scope> </variable> <attribute> <name>ordersListName</name> <required>true</required> <rtexpvalue>false</rtexpvalue> </attribute> </tag> <tag> <name>DisplayOrderLines</name> <tag-class>tags.DisplayOrderLines</tag-class> <body-content>JSP</body-content> <variable> <name-given>orderLine</name-given> <variable-class>beans.OrderLine</variable-class> <declare>true</declare> <scope>NESTED</scope> </variable> <attribute> <name>linesListName</name> <required>true</required> <rtexpvalue>false</rtexpvalue> </attribute> </tag> </taglib>

JSP-файл:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*, java.text.*, beans.*" %>
<%@ taglib uri="/WEB-INF/tlds/week07_portfolio" prefix="wk07" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<%  if (session.getAttribute("orderList") == null)
{
    throw new ServletException("No order list available");
}

int ctr = 0;
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");

%>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Week 07, Portfolio Exercise</title>
    <link rel="stylesheet" type="text/css" href="Week07_Portfolio.css">
    </head>
    <body>
    <h1>Week 07, Portfolio Exercise</h1>
    <h2>Order list</h2>

    <wk07:DisplayOrders ordersListName="orderList">
        <table>
            <tr class="header">
                <td>Order Num: <%= order.getOrderNum() %></td>
                <td>Customer: <%= order.getName() %></td>
                <td>Date: <%= df.format(order.getOrderDate()) %></td>
            </tr>
        </table>

        <% pageContext.setAttribute("orderLines", order.getOrderLines()); 
           ctr = 0;
        %>
        <table>
            <tr>
                <th>Ref. Code</th>
                <th>Item</th>
                <th>Qty</th>
            </tr>
        <wk07:DisplayOrderLines linesListName="orderLines">
            <tr<%= ctr++ % 2 == 0 ? " class=\"shaded\"" : ""%>>
                <td><%= orderLine.getItem().getRefCode()%></td>
                <td><%= orderLine.getItem().getName()%></td>
                <td><%= orderLine.getQuantity()%></td>
            </tr>
        </wk07:DisplayOrderLines>
        </table>
        <p>&nbsp;</p>
    </wk07:DisplayOrders>        
</body>


person kamweshi    schedule 01.12.2010    source источник


Ответы (2)


Должно быть <rtexprvalue>.

person axtavt    schedule 01.12.2010

Ваша корневая декларация taglib не работает.

<taglib version="2.0" 
    xmlns="http://java.sun.com/xml/ns/j2ee"
    lns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">

lns должно быть xmlns, а / должно быть между j2ee и web-jsptaglibrary_2_0.xsd.

Правильная декларация выглядит следующим образом:

<taglib version="2.0"
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">

В качестве примечания убедитесь, что объявление web-app корня вашего web.xml по крайней мере соответствует сервлету 2.4. Иначе все равно не получится.

<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

Независимо от проблемы, использование скриптлетов в JSP не рекомендуется уже десять лет.

person BalusC    schedule 01.12.2010
comment
Спасибо, я изменил его, а также другой ответ, и теперь он работает. Постараюсь больше не использовать скриптлеты в JSP. - person kamweshi; 01.12.2010