Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 2 使用JSF2和IceFaces2在datatable中生成唯一的ID属性_Jsf 2_Uniqueidentifier_Clientid_Icefaces 2 - Fatal编程技术网

Jsf 2 使用JSF2和IceFaces2在datatable中生成唯一的ID属性

Jsf 2 使用JSF2和IceFaces2在datatable中生成唯一的ID属性,jsf-2,uniqueidentifier,clientid,icefaces-2,Jsf 2,Uniqueidentifier,Clientid,Icefaces 2,我正在尝试使用如下代码: <ice:dataTable id="revisionDocuments" value="#{agendaBean.agenda.revisionsDocuments}" var="revision"> <ice:column> <ice:inputText value="#{revision.sequenceAdresse}" id="revisionSequenceAdresse#{revision.index}

我正在尝试使用如下代码:

<ice:dataTable id="revisionDocuments" value="#{agendaBean.agenda.revisionsDocuments}" var="revision">
    <ice:column>
        <ice:inputText value="#{revision.sequenceAdresse}" id="revisionSequenceAdresse#{revision.index}" />
    </ice:column>
revisionDocuments:0:revisionSequenceAdresse
revisionDocuments:1:revisionSequenceAdresse
revisionDocuments:2:revisionSequenceAdresse
是,但这只影响HTML中生成的clientId。表示来自FacesContext的ViewRoot中表单字段的UIComponent具有所有相同的id和clientId yes,如果HTML包含revisionDocuments:0:revisionSequenceAdresse,则在ViewRoot中找到的clientId是revisionDocuments:revisionSequenceAdresse

有人能帮我吗


非常感谢您,我们将非常感谢您的帮助。

组件ID将在视图构建期间确定,而不是在视图渲染期间确定。{revision}在视图生成期间不可用,因此其计算结果始终为空。基本上,您需要将其绑定到{agendaBean}或在视图构建期间已经在范围内的其他内容。组件ID特定于组件本身,而不是其生成的HTML输出。不能为同一个组件分配多个不同的ID


但实际上,你不需要在这种方法上瞎折腾。您认为这就是解决方案的具体问题已经在前面的问题中得到了回答:。

有点让人困惑,因为我在JSF1.2和IceFaces 1.8.2上的另一个项目中做了一些非常接近这段代码的事情。从生命周期的角度来看,情况必须稍有不同。当我在这个项目上从1.8.2迁移到2.0.2时,我将看看它是否有效。感谢您对生命周期的回答和精确性。你帮了大忙!如果EL表达式的值在视图生成期间可用,则有可能。具体的问题是,您在id属性中尝试计算EL表达式,该表达式的值仅在视图渲染时可用。尝试像id=foo{agendaBean.someId}这样的方法,您将看到它的计算结果是正确的。但是,如果使用大But,则在视图渲染期间,所有生成的HTML元素都将具有相同的ID后缀值。