Я хочу использовать пользовательский EL распознаватель, чтобы избежать XSS, как описано здесь: http://pukkaone.github.io/2011/01/03/jsp-cross-site-scripting-elresolver.htmlНевозможно зарегистрировать пользовательский ELResolver
Я добавил
<listener>
<listener-class>com.github.pukkaone.jsp.EscapeXmlELResolverListener</listener-class>
</listener>
моей web.xml, который является версия = «3,0»
Когда я начинаю мое приложение с помощью tomcat7-Maven-плагин: МВН tomcat7: запустить я получаю следующую ошибку
SEVERE: Exception sending context initialized event to listener instance of class com.github.pukkaone.jsp.EscapeXmlELResolverListener
java.lang.NullPointerException
at com.github.pukkaone.jsp.EscapeXmlELResolverListener.contextInitialized(EscapeXmlELResolverListener.java:37)
, где JspFactory.getDefaultFactory()
возвращает null.
Похожие вопросы предполагают, что этот вопрос конфликтует сервлетов/JSP баночки, но шахты определяются как это предусмотрено
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
Я также подтвердил dependency:tree -Dverbose=true
, что нет никаких паразитных зависимостей по классам.
Как указано выше, я использую сервлет версии 3.0, который соответствует новым артефактам javax.servlet-api. – user763648