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

Jsf XML分析错误:未找到元素位置:http://localhost:8081/web-app/pages/login.xhtml第1行第1列:^,jsf,xml-parsing,facelets,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"> 我正在使用Java8、JSF、Primefaces、Maven和Tomcat8。 我认为我的配置有问题

我的
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">

我正在使用Java8、JSF、Primefaces、Maven和Tomcat8。 我认为我的配置有问题,例如servlet和
web.xml

XML分析错误:未找到元素位置:[……]行号1,第1列

在这一点上,这个准确的错误意味着webbrowser在被指示将响应解释为XML时检索到了一个完全空的响应,通常通过
内容类型
标题,例如
应用程序/xhtml+XML
应用程序/XML
,或者如果没有,通过URL中的文件扩展名,如
.xhtml
.xml

考虑到这是在请求JSF登录页面时发生的,这强烈表明它包含语法/运行时错误,并且webapp没有正确配置错误处理。显然,错误页面本身也会在登录/安全约束后被阻止,导致服务器无法提供包含所有异常详细信息的“正常”错误页面,因此返回一个完全空的响应


最好的方法是读取服务器日志中的实际异常和/或运行调试器和/或创建一个将异常显式记录到服务器日志中的日志(以防找不到异常,从而导致异常被吞没)。一旦有了实际的异常,通常需要使用异常类型+消息+第1行作为关键字在Internet上查找线索。

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

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

curl -X GET --header 'Accept: application/json' 'http://192.168.1.249:9001/students/
您可以在类似“Accept:application/json”的标题中看到,这意味着客户端只接受json格式的服务器响应

但服务器以XML内容类型生成响应类型,并尝试将XML解析为JSON。在此阶段,将触发异常

解决方案:

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


谢谢。

非常感谢。我的侦听器在tomcat输出中出错。我修好了,现在看起来好多了。是的,你说得对,我需要实现web应用处理。不客气。既然你是新来的,别忘了在对理解和解决具体问题最有帮助的时候,把答案标注为“接受”。另见