在使用MyFaces创建Web应用程序的某些时候,我的faces-config.xml和web.xml开始战斗,但在我做出任何更改之后似乎很久了。我一直在尝试不同的罐子和不同的配置,但无法正确安装任何东西。虽然我觉得我已经尝试了所有东西(解决方案除外),但这里有一个代码实例:
的web.xml:
<?xml version="1.0" encoding="UTF-8">
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
faces-config.xml简介:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
我收到此错误:
SEVERE [org.apache.commons.digester.Digester] (MSC service thread 1-2) Parse Error at line 2 column 14:
Document is invalid: no grammar found.: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196)
at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:132)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:390)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:322)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:281)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:136)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:733)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1754)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1196)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:555)
at org.apache.commons.digester.Digester.parse(Digester.java:1745) [commons-digester-1.8.jar:]
at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:197) [myfaces-impl-1.1.8.jar:]
还有:
SEVERE [org.apache.commons.digester.Digester] (MSC service thread 1-2) Parse Error at line 2 column 14:
Document root element "faces-config", must match DOCTYPE root "null".: org.xml.sax.SAXParseException: Document root element "faces-config", must match DOCTYPE root "null".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196)
我为什么这不起作用而疯狂。这是明显的原因,我错过了吗?或者问题不在于这些文件,所以我应该尝试更换我的罐子?我正在使用JBOSS 7进行部署。谢谢! 谢谢!
答案 0 :(得分:1)
我根本没有MyFaces的经验,但是从查看我在网上看过的其他帖子(因为你在初始XML的开头有一些空格),我会确保没有t XML文档中任何可能导致问题的隐藏字符或额外空格。
此外,我可能会看到faces-config.xml的根元素中的值是否正确。具体来说,我会检查xsi:schemaLocation属性的值。我并不十分熟悉特定XML解析器的工作方式,但从您的例外情况来看,它可能正在尝试使用提供的URL验证模式并失败。看起来您指定了两个URL,这可能不是有效的标记。实际上,第二个URL确实解析为有效的XSD定义文件。尝试将其限制为该URL,看看是否有任何改变。
希望有所帮助!
编辑:事实证明我可能被误导了。 xsi:schemaLocation元素可以有两个以空格分隔的值。第二个需要是有效的模式文件。我会检查它们实际上是间隔的。它看起来像是你的回答,但是值得一试。