在tomahwak dataList(JSF 1.2)中动态生成id

时间:2014-10-24 12:15:30

标签: jsf-1.2 tomahawk

我无法弄清楚如何为位于<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。

1 个答案:

答案 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,依此类推。