barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

понедельник, 30 января 2012 г.

Orbeon xforms-jsp и теги <script> внутри <head> на включаемых jsp-страницах

Наткнулся тут на интересные грабли при размещении jsp-страниц в директории xforms-jsp веб-приложения Orbeon`а: мало того, что генерируемая jsp-шкой html-страница должна быть валидным xml (с чем я ещё готов как-то мириться), так ещё к тому же Orbeon умудряется по своему усмотрению переносить в пределах документа теги <script>. 
А именно: пусть есть некоторая jsp-страница header.inc.jsp, включаемая в другую страницу index.jsp с помощью тега  <jsp:include>. Тогда, если на странице header.inc.jsp в блоке <head> есть теги <script> с inline яваскриптом или со ссылками на внешние скрипты, в итоговом html-коде, генерируемом страницей index.jsp, теги <script> окажутся после закрывающегося тега </body>, а вовсе не в <head>. 
Такое поведение бывает крайней неудобно, например, когда переменные из js-файлов или inline js-кода используются в теле страницы т.к. предполагается, что js уже загружен в <head>. Единственное пока найденное мною решение - перенести теги <script> из <head> в начало тега <body>.
Вся эта неразбериха вызвана тем, что к jsp-страницам в директории xforms-jsp применяется фильтр org.orbeon.oxf.servlet.OrbeonXFormsFilter, выполняющий рендеринг xform`ы из xml в html (благодаря этому jsp-страницы в этой директории могут содержать xforms-код, который будет корректно отрендерен в html). 

Комментариев нет:

Отправить комментарий