Простой тег не может интерпретировать атрибут области сеанса - PullRequest
1 голос
/ 13 июля 2009

Я пытаюсь отобразить значение атрибута ArrayList из JSP, установленного в области сеанса в сервлете, как:

 hs.setAttribute("Attr",arr); //where hs is reference to HttpSession and arr is of type of ArrayList

Но когда я вызывал простой тег с выражением EL как optionList значение атрибута тега advice в JSP как:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="mine" uri="DiceFunctions" %>


<html><body>

<mine:advice  optionList='${sessionScope.Attr}' />


</body></html>

Я ничего не отображал.

Код обработчика простого тега:

package foo;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import javax.servlet.jsp.*;
import java.util.*;

public class AdvisorTagHandler extends SimpleTagSupport{
String name;
String size;
ArrayList option;

public void doTag() throws JspException,IOException{
JspWriter out=getJspContext().getOut();

for(Object o: option)
{
out.print(out.toString());

}

public void setOptionList(List value)
{
option=(ArrayList)value;


}
}

и TLD, заданный в папке WEB-INF:

<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib 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" version="2.0">

<tlib-version>1.2</tlib-version>
<jsp-version>1.2</jsp-version>
<uri>DiceFunctions</uri>

<tag>

<name>advice</name>
<tag-class>foo.AdvisorTagHandler</tag-class>
<body-content>empty</body-content>
<attribute>
<name>optionList</name>
<type>java.util.List</type>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>

Что не так я делаю? Как я могу отобразить значение объекта ArrayList?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 13 июля 2009

Я думаю, у вас есть простая ошибка в этой строке:

out.print(out.toString());

Я думаю, что вы

out.print(o.toString());
1 голос
/ 13 июля 2009

Я думаю, это потому, что в вашем TLD указана версия JSP как 1.2. Язык выражений появился только в JSP 2.0, поэтому контейнер может явно отключить выражения для этого тега.

Попробуйте установить jsp-версию на 2.0. Кроме того, убедитесь, что ваш web.xml объявлен как использующий сервлеты версии 2.4 или выше, некоторые контейнеры отключают функции, если считают, что на них ссылается более ранняя версия сервлета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...