Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
JSF组件在绑定后消失_Jsf - Fatal编程技术网

JSF组件在绑定后消失

JSF组件在绑定后消失,jsf,Jsf,我定义了一个自定义组件,并尝试使用绑定,如下所示: <ui:composition ...> <div> <f:subview> <a4j:outputPanel> <h:commandButton id="t1" value="test!" /> ... </a4j:outputPanel>

我定义了一个自定义组件,并尝试使用绑定,如下所示:

<ui:composition ...>
    <div>
        <f:subview>
            <a4j:outputPanel>
                <h:commandButton id="t1" value="test!" />
                ...
            </a4j:outputPanel>
        </f:subview>
    </div>
</ui:composition>

...
在我添加如下绑定属性之前,此组件可以正常工作:

<h:commandButton id="t1" binding="#{foo}" value="test!" onclick="alert('I am #{id:cid(foo)}'); return false;" />

这个组件没有显示,我也找不到这个按钮对应的代码

有人知道怎么解决吗

是的,它被多次使用

这是原因。
绑定
应引用组件的唯一引用。现在,物理上有多个组件引用同一个引用

我不确定具体的功能需求是什么,但当您已经在JavaScript上下文中时,这种方法通常是不必要的。然后,也可以通过以下方式解决特定示例:

<h:commandButton id="t1" value="test!" onclick="alert('I am ' + id); return false;" />


生成的HTML元素本身的ID与JSF组件客户端ID完全相同。

绑定不应该是像#{bean.prop}这样的bean属性吗?还是你把那个细节漏掉了?如果你真的把它绑定到一个属性,你能显示getter和setter的代码吗?@Eelke谢谢你的回复。我做了和上面显示的完全相同的事情。该模板应按此处所述工作:。是否多次包含此模板?@BalusC是的,已多次使用。谢谢。但是在这里使用绑定的最初目的是因为这个组件用于datatable的每一行,并且按钮文本应该在单击时更新。我尝试使用id标识组件,但由于它位于datatable中,因此我确实需要客户端id。然后,我的答案中的示例仍然适用,或者更好,
onclick=“value='updated!”;return false;“
。如果它在同一行中,只需使用
var labelId=button.id.substring(0,button.id.lastIndexOf(':')-1)+'labelId'
然后将其传递给
document.getElementById()