我无法弄清楚如何为位于<t:dataList>
内的<t:dataTable>
中的元素生成动态ID。代码看起来或多或少是这样的:
<t:dataTable value="#{SomeBean.foo}" var="item">
<h:column rendered="true">
<div id="divpvmu">
<t:dataList value="#{item.templates}" var="template" rowCountVar="templateIndex">
<div id="saveBtn">
</div>
</t:dataList>
</div>
</h:column>
很明显,这段代码生成了一些具有相同id =&#34; saveBtn&#34;的div。 。我希望每个生成的div都有不同的id。我试图通过这种改变来做到这一点:
<div id="saveBtn_#{templateIndex}">
,然而我得到了例外
javax.servlet.jsp.JspException: java.io.IOException: Example.jsp(50,31) JBWEB004178: #{..} is not allowed in template text
有没有办法为这样的结构生成不同的id?我使用的是JSF 1.2。
答案 0 :(得分:0)
有<t:div>
标记。它允许您在id属性中使用EL表达式。
所以这样的事情应该可以胜任:
<t:div id="saveBtn_#{templateIndex}" forceId="true">
JSF也应该为你自动生成id:
<t:dataList id="myList" value="#{item.templates}" var="template">
<t:div id="saveBtn">
</t:div>
</t:dataList>
t:dataTable,t:dataList等中的这个标签将生成如下的id:
myList:0:saveBtn
第一个元素,
第二个元素myList:1:saveBtn
,依此类推。