Ошибка компиляции JSP при изменении анализатора XML к Xerces
Вопрос
Все, я работаю над Java WebApp, который мы развертываем в сервере Web App. Я делал анализ XML для новой части приложения и понял, что наше приложение использовало Классы смолы сделать разбор. Я хотел уйти от этого и использовать что-то более стандартное по ряду причин, поэтому я устанавливаю эти системные свойства в моем файле Config (и добавил банку Xerces в мой класс):
<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
И теперь я получаю ошибки компиляции JSP на нескольких страницах (я думаю, что в построенном парсере смолы был более снисной). Ошибка читает:
org.xml.sax.SAXParseException: The value of attribute "title" associated with an element type "display:column" must not contain the '<' character.
И «Дисплей: столбец» на некоторых страницах действительно содержит разметку в атрибуте «Title». Вот пример:
<display:column scope='col' class=" appealColorBG selectAllWidth"
title="<span class='centerThis'><label for='selectAll'>Select All</label><br />
<input type='checkbox' name='selectAll'
id='selectAll'
onClick='selectAllCheckboxes();'/></span> " >
Это какой-то уродливый код JSP, я знаю, но это также код, который уже в производстве, поэтому я нерешитель, чтобы изменить его.
Кто-нибудь знает о том, что я могу установить Xerces так, чтобы он позволил JSP компилировать, как есть?
Решение
Это, безусловно, уродливый код JSP.
Если вы используете анализатор XML на нем, у вас есть проблема. Значения атрибутов в действительном XML не могут содержать символ «<», так как Xerces говорит вам.
Сомнительно, что вы можете сказать Xerces, чтобы принять это, но исправление XML будет лучшей идеей, чем говорить анализатор XML, в любом случае принятие неправильного XML.
Вы, вероятно, хотите вернуться к использованию классов смолы до тех пор, пока не сможете кормить SCERCES PORDE XML, или настроить смолу, чтобы не использовать анализатор XML как часть его компиляции JSP - см. Комментарии.