我有一个复合组件
<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
这是如何引起的?如何解决?
答案 0 :(得分:0)
<cc:editableValueHolder>
应仅引用实施EditableValueHolder
interface的组件。由org.richfaces.component.UIParameter
支持的<a4j:param>
肯定不是这样的。
还有<cc:valueHolder>
应该引用实施ValueHolder
interface的组件,其中converter
实际上是<a4j:param>
neither个元素的成员这个界面。
总而言之,无论你想要实现什么,都是不可能的。您需要寻找一种不同的方法来解决您尝试使用这种错误方法解决的问题。请注意,此问题与复合组件无关。即使在复合材料之外,您也无法在<a4j:param>
上应用转换器。