0

我正在通过 Oracle JEE6 教程学习 jsf 复合组件,并创建了以下两个文件:

在 web root/resources/emcomp 目录中:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>This content will not be displayed</title>
</h:head>
<h:body>
    <composite:interface>
        <composite:attribute name="value" required="false"/>
    </composite:interface>
    <composite:implementation>
        <h:outputLabel value="Email id: "></h:outputLabel>
        <h:inputText value="#{cc.attrs.value}"></h:inputText>
    </composite:implementation>
</h:body>
</html>

在网络根目录中:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:em="http://java.sun.com/jsf/composite/emcomp/">
<h:head>
     <title>Using a sample composite component</title>
</h:head>
<body>
     <h:form>
         <em:email value="Enter your email id" />
     </h:form>
</body>
</html>

但是,在运行应用程序时,我得到:

java.lang.StringIndexOutOfBoundsException String index out of range :30

这似乎是由 em:comp 标记或其调用的文件引起的,但是我看不出是什么原因造成的?

项目树是:

META-INF/MANIFEST.MF
resources/emcomp/email.xhtml
WEB-INF/faces-config.xml
WEB-INF/web.xml
emuserpage.xhtml

堆栈跟踪是:

javax.faces.FacesException: java.lang.StringIndexOutOfBoundsException: String index out of range: 30
                at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241)
                at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:156)
                at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:259)
                at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
                at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240)
                at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760)
                at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
                at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1033)
                at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4499)
                at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:282)
                at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954)
                at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252)
                at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584)
                at com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439)
                at com.ibm.ws.threading.internal.Worker.run(Worker.java:421)
                at java.lang.Thread.run(Thread.java:738)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 30
                at java.lang.String.substring(String.java:1088)
                at org.apache.myfaces.shared_impl.resource.ExternalContextResourceLoader.getResourceVersion(ExternalContextResourceLoader.java:79)
                at org.apache.myfaces.application.ResourceHandlerImpl.deriveResourceMeta(ResourceHandlerImpl.java:187)
                at org.apache.myfaces.application.ResourceHandlerImpl.createResource(ResourceHandlerImpl.java:103)
                at org.apache.myfaces.application.ResourceHandlerImpl.createResource(ResourceHandlerImpl.java:77)
                at org.apache.myfaces.view.facelets.tag.composite.CompositeResourceLibrary.containsTagHandler(CompositeResourceLibrary.java:82)
                at org.apache.myfaces.view.facelets.tag.CompositeTagLibrary.containsTagHandler(CompositeTagLibrary.java:73)
                at org.apache.myfaces.view.facelets.compiler.CompilationManager.pushTag(CompilationManager.java:270)
                at org.apache.myfaces.view.facelets.compiler.SAXCompiler$CompilationHandler.startElement(SAXCompiler.java:232)
                at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
                at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
                at org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
                at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
                at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
                at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
                at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
                at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
                at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
                at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
                at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
                at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
                at javax.xml.parsers.SAXParser.parse(Unknown Source)
                at org.apache.myfaces.view.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:680)
                at org.apache.myfaces.view.facelets.compiler.Compiler.compile(Compiler.java:118)
                at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory._createFacelet(DefaultFaceletFactory.java:280)
                at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:162)
                at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:137)
                at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage._getFacelet(FaceletViewDeclarationLanguage.java:1926)
                at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:329)
                at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:66)
                at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:240)
                ... 13 more 
4

0 回答 0