Ошибка компиляции JSP при изменении парсера XML на Xerces - PullRequest
2 голосов
/ 19 апреля 2010

Все, Я работаю над Java-приложением, которое мы разворачиваем на сервере веб-приложений Resin. Я провел анализ XML для новой части приложения и понял, что наше приложение использует классы Resin для анализа. Я хотел уйти от этого и использовать что-то более стандартное по ряду причин, поэтому я установил эти системные свойства в своем файле конфигурации смолы (и добавил ксерокс xerces к моему classpath):

<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.

И тег 'display: column' на некоторых страницах действительно содержит разметку в атрибуте '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 компилироваться как есть?

1 Ответ

1 голос
/ 20 апреля 2010

Это, конечно, ужасный код JSP.

Если вы используете синтаксический анализатор XML, у вас есть проблема. Значения атрибута в допустимом XML не могут содержать символ «<», как говорит Xerces. </p>

Сомнительно, что вы можете сказать Xerces принять это, но исправление XML было бы лучшей идеей, чем обращение анализатора XML к принятию неверного XML в любом случае.

Возможно, вы захотите вернуться к использованию классов Resin, пока не сможете передать Xerces правильный XML или настроить Resin, чтобы он не использовал синтаксический анализатор XML как часть его компиляции JSP - см. Комментарии.

...