【发布时间】:2015-06-01 08:46:41
【问题描述】:
我有一个复合组件
<cc:interface>
<cc:attribute name="value" required="true" />
<cc:editableValueHolder name="converter" targets="jsFunction"/>
</cc:interface>
<a4j:jsFunction name="update">
<a4j:param name="val" assignTo="#{cc.value}" id="jsFunction" />
</a4j:jsFunction>
用作
<my:update value="#{bean.value}" >
<f:converter converterId="beanConverter" for="converter"/>
</my:update>
打开页面时出现以下错误
Caused by: java.lang.ClassCastException: org.richfaces.component.UIParameter cannot be cast to javax.faces.component.ValueHolder
at com.sun.faces.facelets.tag.jsf.ConverterTagHandlerDelegateImpl.applyAttachedObject(ConverterTagHandlerDelegateImpl.java:120) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.FaceletsAttachedObjectHandler.applyAttachedObject(FaceletsAttachedObjectHandler.java:98) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.application.view.FaceletViewHandlingStrategy.retargetHandler(FaceletViewHandlingStrategy.java:1416) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.application.view.FaceletViewHandlingStrategy.retargetAttachedObjects(FaceletViewHandlingStrategy.java:673) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyNextHandler(CompositeComponentTagHandler.java:199) [javax.faces-2.2.11.jar:2.2.11]
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53) [richfaces-a4j-4.5.5.Final.jar:4.5.5.Final]
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) [javax.faces-2.2.11.jar:2.2.11]
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53) [richfaces-a4j-4.5.5.Final.jar:4.5.5.Final]
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) [javax.faces-2.2.11.jar:2.2.11]
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53) [richfaces-a4j-4.5.5.Final.jar:4.5.5.Final]
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) [javax.faces-2.2.11.jar:2.2.11]
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53) [richfaces-a4j-4.5.5.Final.jar:4.5.5.Final]
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:106) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:206) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:111) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) [javax.faces-2.2.11.jar:2.2.11]
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53) [richfaces-a4j-4.5.5.Final.jar:4.5.5.Final]
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:225) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:312) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:371) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:350) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:174) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:161) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:994) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [javax.faces-2.2.11.jar:2.2.11]
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) [javax.faces-2.2.11.jar:2.2.11]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:655) [javax.faces-2.2.11.jar:2.2.11]
... 63 more
这是怎么引起的,我该如何解决?
【问题讨论】:
-
我可以解释这个问题,但我无法为您实际尝试实现的任何内容提供正确的解决方案,因为您错误地认为这一切都是正确的解决方案不清楚。我会说你把事情复杂化了,你只需要一个幂等链接。
-
我正在创建一个复合组件,函数 a4j: jfFunction 必须通过它创建一组我希望转换器成为复杂对象的 id,但我不能将转换器作为属性传递。
-
是的,从代码中可以清楚地看到。但目前尚不清楚您认为以这种方式实现的具体要求。
标签: jsf jsf-2 classcastexception composite-component param