Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF ui:insertChildren当组件在同一个项目中时很好,当组件在标记库中时失败_Java_Jsf_Facelets - Fatal编程技术网

Java JSF ui:insertChildren当组件在同一个项目中时很好,当组件在标记库中时失败

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"/> &

我有一个相当简单的JSF组件:

<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了。我会再试一次,可能是出了什么问题。