Почему файлы тегов JSP 2.0 не могут содержать текст тела «JSP»? - PullRequest
2 голосов
/ 23 мая 2009

«Новые» теги файлов тегов JSP 2.0 невероятно полезны, и в большинстве случаев (по крайней мере, я видел) они обеспечивают гораздо более читаемый формат, чем класс Java. Однако, хотя файлы тегов могут сделать почти все, что может сделать тег класса Java, есть одна гигантская вещь, которую они не могут сделать: иметь содержимое сценариев (т.е. "<%" материал между началом и конечные метки). </p>

Итак, мой вопрос состоит из нескольких частей:

  1. Кто-нибудь знает, почему (с точки зрения дизайна) это так? Неужели для файлов тегов невозможно иметь такой контент из-за того, как они реализованы или что-то в этом роде?
  2. Кто-нибудь знает, есть ли в будущем планы разрешить body-content = "JSP" в файлах тегов (возможно, в будущей версии стандарта JSP)?
  3. Кто-нибудь знает, как "взломать" файлы тегов, чтобы они могли иметь содержимое сценариев (например, иметь тело-содержимое без сценариев, а затем каким-то образом обрабатывать содержимое)?

По сути, я мечтаю когда-нибудь написать файлы тегов, которые не приведут к исключениям, если кто-то поставит

<%= myVar %>

внутри, и я просто пытаюсь определить, безнадежен этот сон или нет.

Ответы [ 2 ]

3 голосов
/ 26 мая 2009

Теги JSP были спроектированы таким образом, чтобы было полное разделение проблем между уровнем представления и кодом. Предполагается, что JSP-страницы редактируются дизайнерами, поэтому использование кода Java не подходит.

Полагаю, вам нужно адаптировать свои привычки кодирования к этой философии. Вы можете переместить весь свой Java-код в свои компоненты. Сделайте все, что требуется, а затем передайте соответствующий компонент на страницу JSP. Обработка исключений также должна идти туда. Если этого недостаточно, вы всегда можете создать свои собственные теги для использования.

2 голосов
/ 23 мая 2009

Они могут, если вы используете теги старого стиля, то есть производные от BodyTag. Однако реализация SimpleTag не может.

Поскольку фрагменты JSP не поддерживают скриптлеты, значение SimpleTag не может быть "JSP"

Лично я бы вообще не использовал Java для написания тегов, если мог, и просто использовал бы новый стиль .tag. Вы можете включить Java-код в такие файлы тегов, хотя в целом, если вы вынуждены это делать, вы, вероятно, делаете что-то не так.

...