java - JSF,Primefaces LazyDataModel - 在不调用加载方法的情况下更新行

标签 java jsf primefaces

我有一个包含 2 列的简单惰性数据模型。第二列只有默认情况下禁用的复选框(无法单击它们)。在行选择上,我只想启用复选框 (checkbox.disabled = false) 而无需调用 load 方法 - 因为我的数据没有更改,所以不需要请求数据库。问题是,当我更新我的数据表以将 checkbox.disabled 更改为 false 时,然后调用 RENDER_PHASE 并调用 load 方法,另一方面,如果我不更新我的数据表,则该复选框始终处于禁用状态。我怎样才能让它协同工作?

更新:

<h:form id="form-id">
            <p:dataTable var="element"
                         id="data-table-id"
                         value="#{view.elements}"
                         lazy="true"
                         paginator="true"
                         paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                         selectionMode="single"
                         rows="5"
                         rowsPerPageTemplate="5,10,15,30"
                         selection="#{view.selectedElement}">

                <p:ajax event="rowSelect"
                        listener="#{view.someMethod()}"
                        update="checkbox"/>

                <p:column headerText="Element"
                          width="300">
                    <h:outputText value="#{element.name}"/>
                </p:column>


                <p:column headerText="Active"
                          width="300">
                    <p:selectBooleanCheckbox id="checkbox"
                            disabled="#{view.selectedElement.id ne element.id}"
                            value="#{element.active}"/>
                </p:column>
            </p:dataTable>
        </h:form>

当我放置 update="form-id" 时, Activity 复选框被启用 - 但正如我所说,load 方法被调用,这是不受欢迎的行为

最佳答案

这就是 JSF 的工作方式,如果您说 update="form-id"JSF 将重新呈现整个表单,包括重建您的数据表,从而调用您的加载方法。

听起来您想要的是更新单行,请查看 OmniFaces Ajax.updateRow方法。

例如 JSF...

<p:dataTable binding="#{myDataTable}"

<p:commandButton value="Update" action="#{ajaxBean.updateRow(myDataTable, 0)}" />

Java:

public void updateRow(UIData table, int index) {
   Ajax.updateRow(table, index);
}

关于java - JSF,Primefaces LazyDataModel - 在不调用加载方法的情况下更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54617940/

相关文章:

java - 使用 TextView 动态显示文本 (Android)

java - 最佳实践 Springs Kafka Consumer : What kind of message should the consumer receive

java - 如何使用非 Lambda 函数定义 Spark RDD 转换

html - 如何使用 html 5 按钮执行 jsf 操作

jsf - 是否可以为 p :selectOneMenu? 设置占位符文本

jquery - 使 Primefaces 计划事件在某些条件下可拖动和不可拖动

java - 在 TestNG XML 中设置测试方法优先级

java - JSF - 由不同机器上的浏览器共享的 session 作用域 bean

jsf - JSF h 的 PrimeFaces 标签 :inputHidden

java - PrimeFaces 3.4 图表数据提示格式