PrimeFaces Slider 'for' 值在数据表中不起作用
PrimeFaces Slider 'for' value not working in a dataTable
大家好,我正在尝试创建一个数据 table,人们可以在其中为每一行设置 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(cote_CRT001
是第一个 cote_#{cote.critere.code.trim()}
值):
javax.servlet.ServletException: Cannot find component for expression "cote_CRT001" referenced from "formEditEval:coteTable:0:j_idt120".
我真的不知道该尝试什么了。有人知道为什么它不起作用吗?
dataTable
是一个命名容器,因此其中的组件将以 dataTable
的 id
为前缀。此外,table(每行)中呈现的数据的每次迭代都会对生成的 id
产生影响。因此,您无需尝试创建唯一的 id
。如果你只是简单地使用 cote
的 inputText
的 id
。由于表单也是一个命名容器,它将在第一行生成为 formId:coteTable:0:cote
,在第二行生成为 formId:coteTable:1:cote
,依此类推。在您的 slider
中,您可以简单地使用 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>
另见
- How to find out client ID of component for ajax update/render? Cannot find component with expression "foo" referenced from "bar"
大家好,我正在尝试创建一个数据 table,人们可以在其中为每一行设置 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(cote_CRT001
是第一个 cote_#{cote.critere.code.trim()}
值):
javax.servlet.ServletException: Cannot find component for expression "cote_CRT001" referenced from "formEditEval:coteTable:0:j_idt120".
我真的不知道该尝试什么了。有人知道为什么它不起作用吗?
dataTable
是一个命名容器,因此其中的组件将以 dataTable
的 id
为前缀。此外,table(每行)中呈现的数据的每次迭代都会对生成的 id
产生影响。因此,您无需尝试创建唯一的 id
。如果你只是简单地使用 cote
的 inputText
的 id
。由于表单也是一个命名容器,它将在第一行生成为 formId:coteTable:0:cote
,在第二行生成为 formId:coteTable:1:cote
,依此类推。在您的 slider
中,您可以简单地使用 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>
另见
- How to find out client ID of component for ajax update/render? Cannot find component with expression "foo" referenced from "bar"