Передача значения в пользовательский тег с указанием NumberFormatException - PullRequest
1 голос
/ 14 февраля 2012

Я определил пользовательский тег для получения одного параметра, числа, которое он затем использует для поиска некоторой информации и возврата. Я продолжаю получать NumberFormatException, хотя. Я передаю номер тегу в моем JSP с помощью EL.

<my:myTag id="${action.id}"/>

В классе bean для Action:

private int id;
private void setId(int id){
this.id = id;
}
private int getId(){
return id;
}

В моем обработчике пользовательских тегов:

private int id;
//getters and setters for id
public int doStartTag() throws JSPException {
//Does some stuff with id
}

По моему tld (некоторые вещи опущены):

<attribute>
   <name>id</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
</attribute>

Тег делает то, что я хочу, если я просто передаю число (т.е. id = "6"), но всегда выдает исключение, когда я пытаюсь использовать значение выражения EL. Происходит ли где-нибудь преобразование int-строки при вычислении выражения или что-то в этом роде? Это целое поле в бине, и я предполагал, что оно будет просто пропущено как таковое? Я попытался изменить атрибут моего обработчика тега на String и Integer, и ни один не решил это. Я установил для rtexprvalue значение true, поэтому оно должно быть хорошо оценено. Любая помощь приветствуется.

1 Ответ

2 голосов
/ 16 февраля 2012

ОК, это более длинная версия моего комментария выше ...

В JSP 1.x движок JSP ничего не знал о языке выражений.EL был определен как часть JSTL, но он был встроен в сами теги, двигатель не участвовал в оценке.

В JSP 2.0 EL был перемещен в спецификацию JSP, идвигатель поддерживает это.В JSP 2.1 EL был объединен с JSF EL.

Так что, если вы используете JSP 1.x, вы должны сделать EL самостоятельно.

Но, просто чтобыСитуация усложнилась: в JSP 2.0 был упрощен API для обработчиков пользовательских тегов.В JSP 1.x теги реализованы Tag, но в тегах JSP 2.0 реализован SimpleTag.

. Движок JSP 2.x будет поддерживать теги стиля JSP 1.x (классы, реализующие Tag), нобудет обрабатывать их так же, как в JSP 1.x - EL не оценивается механизмом, и тег должен будет явно его оценить.

Что касается rtexprvalue, это фактически контролирует,поддерживается выражение скриптлета, а не поддерживается ли выражение EL (этот атрибут предшествует EL).

...