我正在尝试创建一个每行都有一个selectBooleanCheckbox的h:datatable,所以我将dataTable包装在一个h:form元素中。我的dataTable还需要支持分页和搜索。这工作正常,直到我将表包装在h:表单中,此时用于分页和搜索的所有JQuery元素都消失了。我已经将整个表包装在一个表单而不是一个列中,因为页面上的提交按钮需要以与表格相同的形式包装(据我所知)。
这是我的xhtml:
<h:form>
<h:dataTable value="#{bean.tableProperties()}"
var="property" styleClass="responsive small-table"
id="propertiesSelect">
<h:column headerClass="column10">
<f:facet name="header">Properties</f:facet>
<div class="medium-12 columns checkbox" align="right">
<h:selectBooleanCheckbox id="propertySelect"
value="#{bean.selectedProperties[property.propertyId]}">
</h:selectBooleanCheckbox>
<h:outputLabel for="propertySelect" class="">
<h:outputText value=""/>
</h:outputLabel>
</div>
</h:column>
<h:column headerClass="">
<f:facet name="header"></f:facet>
<span class="">
<c:if test="#{property.name != null}">
<span class="">#{property.name}</span>,
</c:if>
</span>
</h:column>
</h:dataTable>
<div class="row actions">
<div class="medium-6 columns">
<h:commandButton class="button radius secondary small expand cancel"
value="#{localization['global.button.cancel']}"
action="#{bean.exit}" immediate="true"/>
</div>
<div class="medium-6 columns">
<h:commandButton class="button radius small expand"
value="#{localization['global.button.continue']}"
action="#{bean.submit()}"/>
</div>
</div>
<f:event listener="#{bean.validateProperties}" type="postValidate" param=""/>
</h:form>
</div>
</div>
这是JQuery:
$(document).ready(function() {
$("#propertiesSelect").DataTable({
searching: true,
"aLengthMenu": [
[5, 10, 15, -1],
[5, 10, 15, "All"]
],
"iDisplayLength": 10,
"bLengthChange": true,
"bPaginate": true,
"bSort": true,
"bInfo": true
});
});
因此,如果删除表单,JQuery会起作用,但selectBooleanCheckboxes和commandButtons不会,反之亦然。
我怎么能两个都做?
答案 0 :(得分:0)
你能检查你的HTML输出,表格是如何生成的我的意思是表格的顺序,它应该按照文档建议
<table id="xyz">
<thead>
<th></th>
</thead>
<tbody></tbody>
</table>
一旦确定了订单,DataTables将获取该表并根据启动转换为所需的表。如果我在处理这样的要求时检查日志,我也发现了一些线索。还有一件事我认为数据表没有搜索作为选项,如果你需要有一个搜索选项,可以用"bFilter":true,
完成,或者默认情况下DataTables有过滤选项。
答案 1 :(得分:0)
表格周围不需要表格。您可以根据类名和适当的操作简单地捕获jQuery中的按钮单击。使用Datatables API从数据模型中获取所需的值。
或者,如果您选择使用数据表周围的表单(我不建议这样做),您将被迫在按钮点击事件(例如,向上/向下翻页按钮)上使用event.preventDefault()。请记住,表单内的任何按钮单击都将提交该表单,这对单击分页按钮不起作用!