XML解析错误:找不到元素位置:http:// localhost:8081 / web-app / pages / login.xhtml第1行,第1列:^

时间:2016-04-13 08:10:05

标签: jsf xml-parsing facelets

我的login.xhtml以:

开头
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

我使用的是Java 8,JSF,Primefaces,Maven,Tomcat8。 我认为我的配置有问题,例如servlet和web.xml

2 个答案:

答案 0 :(得分:9)

  

XML解析错误:找不到元素位置:[...]行号1,列1

到目前为止,这个确切的错误意味着webbrowser在被指示将响应解释为XML时检索到一个完全空的响应,通常是通过Content-Type标题,例如application/xhtml+xml或{{ 1}},或者如果不存在,则通过application/xml.xhtml等网址中的文件扩展名。

鉴于在请求JSF登录页面时发生这种情况,这强烈表明它包含语法/运行时错误,并且webapp没有正确配置错误处理。显然错误页面本身也被阻止在登录/安全约束之后,导致服务器无法呈现正常的&#34;错误页面包含所有异常详细信息,因此返回完全空的响应。

您最好的选择是读取服务器日志以获取实际异常和/或运行调试器和/或创建JSF exception handler,明确记录服务器日志的异常(以防您无法查找异常)因此他们似乎被吞下了)。一旦掌握了实际的例外情况,通常需要使用例外类型+消息+第一行作为关键字来查找互联网上的线索。

答案 1 :(得分:-1)

XML解析错误:未找到根元素

当您的客户端发送如下请求时,就会发生错误:

curl -X GET --header 'Accept: application/json' 'http://192.168.1.249:9001/students/

您会在“ Accept:application / json”之类的标题中看到这意味着客户端仅接受JSON格式的服务器响应。

但是Server生成XML内容类型的响应类型,它将尝试将XML解析为JSON。在此阶段,异常触发。

解决方案:

请将响应内容类型更改为application / json或 将请求标头更改为“接受:application / xml”。

谢谢。