Javascript 通过复选框更改在primefaces中渲染或可见的属性

Javascript 通过复选框更改在primefaces中渲染或可见的属性,javascript,ajax,jsf,checkbox,primefaces,Javascript,Ajax,Jsf,Checkbox,Primefaces,单击复选框时,如何将“渲染/可见”属性更改为true(最初设置为false) <p:selectBooleanCheckbox itemLabel = "Show"> <p:ajax execute = "age" render = "true"/> </p:selectBooleanCheckbox> 我想要实现的是,选中复选框后,将生成一个附加列(ajax)来显示年龄记录 <p:column headerText="Age" visibl

单击复选框时,如何将“渲染/可见”属性更改为true(最初设置为false)

<p:selectBooleanCheckbox itemLabel = "Show">
   <p:ajax execute = "age" render = "true"/>
</p:selectBooleanCheckbox>

我想要实现的是,选中复选框后,将生成一个附加列(ajax)来显示年龄记录

<p:column headerText="Age" visible= "false" id = "age">
        <h:outputText value="#{stud.age}" />
</p:column> 


知道如何在primefaces或使用javascript实现这一点吗?谢谢

您需要将复选框的值保存在支持bean中,并使用它来决定应该呈现的年龄列。下面是一个简单但有效的示例:

xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
<h:head />
<h:body>
        <h:form>
            <p:selectBooleanCheckbox value="#{test.show}" itemLabel="Show" >
                <p:ajax update="table"/>
            </p:selectBooleanCheckbox>
            <p:dataTable id="table">
                <p:column headerText="Name"></p:column>
                <p:column headerText="Age" rendered="#{test.show}"></p:column>
            </p:dataTable>
        </h:form>
</h:body>
</html>

注意:这一步将重新呈现整个datatable,这可能会因为数据量太大而变得很慢。

您需要将复选框的值保存在一个支持bean中,并使用它来决定应该呈现的年龄列。下面是一个简单但有效的示例:

xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
<h:head />
<h:body>
        <h:form>
            <p:selectBooleanCheckbox value="#{test.show}" itemLabel="Show" >
                <p:ajax update="table"/>
            </p:selectBooleanCheckbox>
            <p:dataTable id="table">
                <p:column headerText="Name"></p:column>
                <p:column headerText="Age" rendered="#{test.show}"></p:column>
            </p:dataTable>
        </h:form>
</h:body>
</html>

注意:此选项会重新渲染整个datatable,这可能会因为数据量太大而变得很慢。

我如何才能得到一个只渲染列的选项?我认为只有在渲染Age列的情况下才有可能,但它最初是隐藏的。我的解决方案需要对datatable进行完全重新渲染,因为它需要从bean中获取每一行的列值,因为这些值不包括在表的初始版本中。我如何才能得到一个只渲染列的值?我认为这是可能的,如果您也渲染Age列,但它最初是隐藏的。我的解决方案需要对datatable进行完全重新排序,因为它需要从bean中获取每行的列值,因为这些值不包括在表的初始版本中。