2013-03-11 5 views
0

다음 코드를 Home.xhtml 페이지에서 실행할 때마다 다음 예외가 발생합니다. id = items으로 패널의 내용을 호출하려고하지만 성공하지는 못합니다. 컴파일러가 items 식별자로 구성 요소를 찾을 수 없다고 말합니다. 이 컴포넌트 트리 외부에 있기 때문에 Home.xhtmlprimefaces 업데이트 특성이 작동하지 않습니다.

1) 일부

<h:form> 
    <p:commandButton type="submit" value="Speak Out" action="#{statusBean.save}" ajax="true" styleClass="buttonstyle" update="items"/>       
</h:form> 


<p:panel id="items">  
    //content  
</p:panel> 

2) 예외

Mar 12, 2013 1:38:04 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException 
SEVERE: Error Rendering View[/Home.xhtml] 
javax.faces.FacesException: Cannot find component with identifier "items" in view. 
    at org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:249) 
    at org.primefaces.renderkit.CoreRenderer.buildAjaxRequest(CoreRenderer.java:222) 
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:81) 
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:53) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650) 
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:164) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:300) 
    at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:181) 
    at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:125) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

Mar 12, 2013 1:38:04 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/FreeBird_v.6] threw exception [Cannot find component with identifier "items" in view.] with root cause 
javax.faces.FacesException: Cannot find component with identifier "items" in view. 
    at org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:249) 
    at org.primefaces.renderkit.CoreRenderer.buildAjaxRequest(CoreRenderer.java:222) 
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeMarkup(CommandButtonRenderer.java:81) 
    at org.primefaces.component.commandbutton.CommandButtonRenderer.encodeEnd(CommandButtonRenderer.java:53) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:879) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1650) 
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:164) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:300) 
    at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:181) 
    at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:125) 
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1643) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1646) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:389) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 
+2

시도 : 항목을,이 컴포넌트 트리 외부에 있기 때문에. – berkay

+0

@ 버키 대답을 게시해야합니다 :) – partlov

+0

@ 버킷 감사합니다. 작동하지만, 왜 그것이 구성 요소 트리 밖에 있는지 설명해 주시겠습니까? –

답변

1

좋아요는 곧 당신은 :items을 시도해야합니다. 그리고 primeface의 ajax 동작 사용에 대한 자세한 내용은 쇼케이스의 예제를 here에서 확인할 수 있습니다. 또한이 경우 firebug을 사용하여 구성 요소를 관찰 할 수 있습니다. EDIT : BalusC의 경고 이후 동일한 NamingContainer에 없기 때문에 문제가 동일한 구성 요소 트리 안에 있지 않기 때문에 문제가되는 것은 정확합니다.

h: form, f: subviewh: dataTable과 같은 표준 구성 요소는 명명 컨테이너입니다. 구성 요소의 대부분의 집합은 일부 명명 컨테이너에 있으므로 귀하의 경우에는 그 이유 때문에 태그 외부에 있습니다. :items이이를 참조하는 올바른 방법이 될 것입니다.

이 게시물을 참조하시기 바랍니다 당신이 잘 주제를 이해하는 데 도움이 :

+0

어 , 그것은 컴포넌트 트리 바깥에 있지 않습니다. 그것은 같은 구성 요소 트리 안에 있으며 단지 같은 NamingContainer 안에 있지 않습니다. 원인을 적절하게 설명하십시오. – BalusC

관련 문제