如何在素数面数据表中为selectBoolean复选框指定动态id



我想在<p:dataTable>中设置动态id为多复选框。我该怎么给它?请帮忙。

<p:column id="sipyes">  
      <center>
      <h:selectBooleanCheckbox  rendered="#{var1[5]}" id="#{var1[4]}">
      <p:ajax listener="#{pmmbean.checkitem(var1[2],var1[0],var1[3])}"/>
      </h:selectBooleanCheckbox><br/>
      <h:outputText value="#{var1[4]}" rendered="#{var1[5]}"/>
      </center>
</p:column>

在这里我可以得到var1[4]的值,但不能在id属性中设置。

在这里我得到了id selectBoolean复选框id为空。

并得到了这种类型的错误。

我该如何解决?

得到这种类型的错误:

HTTP状态500-不允许id属性为空。

默认情况下,dataTable中的所有元素都采用动态ID,例如:

<h:form id="myForm">
    <p:dataTable id="myTable" value="..." var="...">
        <p:column>
            <h:selectBooleanCheckbox id="firstCheckbox" value="..." />
        </p:column>
        <p:column>
            <h:selectBooleanCheckbox id="secondCheckbox" value="..." />
        </p:column>
    </p:dataTable>
</h:form>

您的复选框ID将为:

  • 对于第一行myForm:myTable:0:firstCheckboxmyForm:myTable:0:secondCheckbox
  • 对于第二行myForm:myTable:1:firstCheckboxmyForm:myTable:1:secondCheckbox

等等

除非您想要自定义的id格式,否则您始终可以创建自己的facelets-taglib函数。根据本教程或本答案,您可以创建自己的id生成器方法,其内容如下:

public static String generateId(String value, Integer index) {
    return value + "_" + index;
}

然后在你的页面中使用它:

xmlns:fnc="http://yournamespace.com/fnc"
...
<h:form id="myForm">
    <p:dataTable id="myTable" value="..." var="item" rowIndexVar="index">
        <p:column>
            <h:selectBooleanCheckbox id="#{fnc:generateId(item.name, index)}" value="..." />
        </p:column>
    </p:dataTable>
</h:form>

只需确保避免重复的ID,为每个ID设置一个唯一的值,就像我在示例中使用的循环索引一样。

我刚刚在动态id之前放了一个随机名称!像这样:

<h:selectBooleanCheckbox  rendered="#{var1[5]}" id="random#{var1[4]}">

然后设置一些你可能使用的东西,比如:

$('#random#{var1[4]}').something();

希望这对你有用!

相关内容

  • 没有找到相关文章

最新更新