Тег импорта JSTL создает исключение java.lang.IllegalStateException с относительным URL - PullRequest
1 голос
/ 13 апреля 2011

В веб-приложении Java я использую инфраструктуру Stripes на Jboss 4.2.3.В моем JSP, когда я использую

<c:import url="http://localhost:8080/contextPath/txts/someID" charEncoding="UTF-8"/>

, он прекрасно работает, и содержимое включено в выходной HTML.Тем не менее, это не работает

<c:import url="/txts/someID" charEncoding="UTF-8"/>

и выдает эту ошибку (весь стек слишком большой для вставки, поэтому я включаю первые несколько строк):Совет был бы оценен.

С уважением

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Проблема в том, что если StreamingResolution открывается с помощью Reader, то он (естественно) открывает Writer для потоковой передачи выходных данных.Тег c: import не заботится и просто вызывает getOutputStream для ответа.

Итак, чтобы смягчить это, вы не должны использовать Reader для вашего StreamingResolution, скорее вам нужно создать StreamingResolution с InputStream.

Другой вариант - переопределить метод StreamingResolution.stream ().

Полосы в основном "делают правильно", но импорт c: import на ваш парад.

К счастью, вы можете контролировать действия Полос.Не так сильно, как c: действия импорта.

1 голос
/ 13 апреля 2011

Проблема не в JSTL, а в целевом сервлете. Сообщение об исключении ясно - вам не следует звонить getOutputStream() и getWriter() для того же ответа.

...