大家好我正在尝试创建一个数据表,人们可以为每行设置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".
我真的不知道该怎么办了。有没有人知道它为什么不起作用?
答案 0 :(得分:1)
dataTable
是一个命名容器,因此其中的组件将以dataTable
id
为前缀。此外,表中(每行)中呈现的每次数据迭代都将生成id
s的效果。因此,您无需尝试创建唯一的id
。如果您只是使用cote
inputText
的{{1}}。由于表单也是命名容器,因此它将在第一行id
生成,第二行formId:coteTable:0:cote
生成,等等。在formId:coteTable:1:cote
中,您只需使用{{1}因为您在同一命名容器中引用了一个组件。
所以,简单地写一下:
slider
另见