Java JSF ui:insertChildren当组件在同一个项目中时很好,当组件在标记库中时失败
我有一个相当简单的JSF组件:Java JSF ui:insertChildren当组件在同一个项目中时很好,当组件在标记库中时失败,java,jsf,facelets,Java,Jsf,Facelets,我有一个相当简单的JSF组件: <composite:interface> </composite:interface> <composite:implementation> <mytaglib:jquery-ui/> <h:outputScript target="head" library="com.mytaglib.mytaglib" name="dockwidget/dockwidget.js"/> &
<composite:interface>
</composite:interface>
<composite:implementation>
<mytaglib:jquery-ui/>
<h:outputScript target="head" library="com.mytaglib.mytaglib" name="dockwidget/dockwidget.js"/>
<f:subview>
<div id="${component.clientId}_div">
<composite:insertChildren/>
</div>
<script>
$(document).ready(function() {
setTimeout("$(document.getElementById('${component.clientId}_div')).dockWidget();", 50);
});
</script>
</f:subview>
$(文档).ready(函数(){
setTimeout($(document.getElementById('${component.clientId}_div')).dockWidget();”,50);
});
我已经将它包含在一个taglib jar(在Eclipse中链接的maven项目)中,并在mytaglib.taglib.xml中包含必需的条目。当我这样使用它时,插入的孩子们似乎不会接孩子们。其他所有内容都会呈现良好状态,包括在控件的div中插入测试“helloworld”
如果我获取xhtml文件并将其置于resources/localcontrols下,并在my page.xhtml中引用该副本,它就会工作,并且包含子组件
这正常吗
谢谢
-理查德
(顺便说一句,setTimeout是因为我的布局javascript运行得太早了——在子组件完全呈现之前。我想知道JQuery是否有办法正确解决这个问题。)不,这不正常。什么JSF impl/版本?顺便说一下,
在那里被完全错误地使用了。移除它。永远不要在facelet中使用它。它只在JSP中有用,我正在使用JBoss7和附带的JSF。我在测试冰面。我需要一个命名父对象,所以使用了子视图?是否有其他方法获取命名父级或唯一名称?复合组件已经是命名容器。我尝试了${component.clientId},发现当我重复我的组件时,它们都具有相同的Id。我注意到其他代码使用${cc.clientId},所以可以尝试一下。我现在不在办公室直到星期二,到时候也一样。我想我已经试过cc.clientId了。我会再试一次,可能是出了什么问题。