Я получаю java.lang.NullPointerException:
при попытке вызвать метод java.lang.String.trim()
объекта, возвращенного с org.w3c.dom.Node.getTextContent()
.Omnifaces 1.8.1 Исключение разбора WebXML
Когда я использую
List<String> welcomeFiles = WebXml.INSTANCE.getWelcomeFiles();
из ManagedBean, как показано ниже:
@ManagedBean
@RequestScoped
public class LogoffControl implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* log4j logger
*/
protected static final Logger LOGGER = LogFactory
.getLogger(LogoffControl.class);
public String logoff() {
List<String> welcomeFiles = WebXml.INSTANCE.getWelcomeFiles();
try {
Faces.redirect(welcomeFiles.get(0));
} catch (IOException e) {
LOGGER.error("Redirect Failed: " + e.getMessage());
}
Faces.invalidateSession();
return "";
}
}
я получаю NullPointerException
, говоря, что я, возможно, опечатка в моем web.xml. Я отлажена, и я вижу, что результат выполнения XPATH в WebXML.java строке 414 успешно, и я делаю его в петлю на линии 418
welcomeFiles.add(welcomeFileList.item(i).getTextContent().trim());
В отладчике welcomeFileList.item(i)
оценивающего к <welcome-file>index.jsp</welcome-file>
, однако вызывающий welcomeFileList.item(i).getTextContent()
результат в null. Я не могу понять это ... Что мне не хватает?
В журнале:
Jan 11, 2015 1:36:37 PM org.omnifaces.config.WebXml init
SEVERE: WebXml failed to initialize. Perhaps your web.xml contains a typo?
java.lang.NullPointerException: while trying to invoke the method java.lang.String.trim() of an object returned from org.w3c.dom.Node.getTextContent()
at org.omnifaces.config.WebXml.parseWelcomeFiles(WebXml.java:418
Oracle JSF 2.1.26, Omnifaces 1.8.1, сервлет 2.5, sapjvm6.1 (Java6), на сервере 7.4 SAPNetweaver.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>tablemaint-web</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
....
</webapp>
Неловкий. Я проверяю ошибку в использовании парсера JAXP. Какой парсер JAXP используется в среде? Можете ли вы попробовать локально с помощью 'getFirstChild(). GetNodeValue()' вместо 'getTextContent()'? – BalusC
Я могу подтвердить, что getFirstChild(). GetNodeValue() действительно работает. Поставщик JAXP находится из SAP com.sap.engine.lib.jaxp.SAXParserFactoryImpl – Chris
Теперь я замечаю, что класс WebXML инициализируется автоматически с помощью omnifaces faces-config.xml (я думаю, через конфигурацию OmniPartialViewContext), поэтому я получаю это исключение NullPointerException даже без моего специального кода выше. Как и следовало ожидать, на этой платформе другие методы getTextContent() выдают ту же ошибку. У меня мало надежды, что SAP исправит эту ошибку, есть ли шанс обходного решения? – Chris