PrimeFaces滑块';对于';值在数据表中不起作用

PrimeFaces滑块';对于';值在数据表中不起作用,primefaces,datatable,slider,Primefaces,Datatable,Slider,大家好,我正在尝试创建一个数据表,人们可以在其中为每行设置1到10之间的值: <p:dataTable id="coteTable" value="#{editEvaluationView.evaluation.listCote}" var="cote"> <p:column colspan="10"> <p:inputText id="cote_#{cote.critere.code.trim()}"

大家好,我正在尝试创建一个数据表,人们可以在其中为每行设置1到10之间的值:

<p:dataTable id="coteTable" value="#{editEvaluationView.evaluation.listCote}" var="cote">

        <p:column colspan="10">

            <p:inputText id="cote_#{cote.critere.code.trim()}"
                                    value="#{cote.valeur}" />
            <p:slider minValue="1" maxValue="10"
                                    for="cote_#{cote.critere.code.trim()}" />
        </p:column>

        <p:column>
                <p:inputText id="commmentaire" value="#{cote.observations}" />
        </p:column>
</p:dataTable>

我真的不知道该试什么了。有人知道它为什么不工作吗?

数据表是一个命名容器,因此其中的组件将在
数据表
id
前面。此外,表(每行)中显示的数据的每次迭代都会对生成的
id
s产生影响。因此,您无需尝试创建唯一的
id
s。如果您只需使用
inputText
id
cote
。由于表单也是一个命名容器,它将在第一行中作为
formId:coteTable:0:cote
生成,在第二行中作为
formId:coteTable:1:cote
生成,等等。在
滑块中,您可以简单地使用
for=“cote”
,因为您正在引用同一命名容器中的组件

所以,简单地写下:

<p:dataTable id="coteTable" value="#{editEvaluationView.evaluation.listCote}" var="cote">
    <p:column colspan="10">
        <p:inputText id="cote" value="#{cote.valeur}" />
        <p:slider minValue="1" maxValue="10" for="cote" />
    </p:column>
    ...
</p:dataTable>

...
另见


只需使用
id=“cote”
for=“cote”
。另请参见:我不知道为什么我把它复杂化了这么多。。。谢谢贾斯珀的帮助。@JasperdeVries:为什么不创建这个作为答案?;-)@Kukeltje完成了。我不确定是否要将其标记为重复,也不觉得真的需要答案。但我想有人只是复制粘贴你的评论(并设法在其中得到一个错误),我很高兴这样做。
<p:dataTable id="coteTable" value="#{editEvaluationView.evaluation.listCote}" var="cote">
    <p:column colspan="10">
        <p:inputText id="cote" value="#{cote.valeur}" />
        <p:slider minValue="1" maxValue="10" for="cote" />
    </p:column>
    ...
</p:dataTable>