当前位置: 首页 > 知识库问答 >
问题:

返回bean属性未在primeface数据表排序操作上更新

杜嘉慕
2023-03-14

我在jsf页面中使用primefaces惰性数据表,如下所示:

<h:form id="searchForm">
    <h:panelGroup id="searchFields">
        <h:outputText value="searchField"/>
        <p:inputMask
                id="txtSearchField"
                dir="LTR"
                mask="9?999999999999"
                maxlength="12"
                value="#{myBackBean.searchField}" />

        <h:commandButton
                id="searchButton"
                value="search"
                action="{myBackBean.searchAction}" />
    </h:panelGroup>
    <p:dataTable
            id="resultTable"
            var="res"
            value="#{res.listOfRecords}"
            paginator="true" paginatorPosition="bottom" rows="10"
            rowsPerPageTemplate="5,10,15"
            lazy="true">

        <p:column headerText="recordId" sortBy="#{res.recordId}">
            <h:outputText value="#{res.recordId}" />
        </p:column>

    </p:dataTable>
</h:form>

如您所见,dataTable上方有一个搜索面板,其中包含用户可以通过填充它们来缩小结果的参数。支持bean中的每个搜索字段都有一个对应的属性,如下所示。

@Component
@Scope("request")
public class myBackBean {

    private String searchField;
    private LazyDataModel<RecordsDto> listOfRecords;

    @Autowired
    MyService myService;

    public String getSearchField() {
        return searchField;
    }

    public void setSearchField(String searchField) {
        this.searchField = searchField;
    }

    public LazyDataModel<OperationsDto> getListOfRecords() {
        return listOfRecords;
    }

    public void setListOfRecords(LazyDataModel<RecordsDto> listOfRecords) {
        this.listOfRecords = listOfRecords;
    }

    public void searchAction() {
        // doing the search and filling the list
        listOfRecords = ...;
        return listOfRecords;
    }
}

当我按下“searchButton”时,后台bean得到更新,它包含用户输入的“searchField”值。但是,当我尝试使用“recordId”列上的排序箭头对网格进行排序时,我的请求会转到back bean的“getListOfRecords()”方法,但“searchField”值为null。

我如何指示数据表排序操作更新back bean中的搜索字段?

共有1个答案

宓毅庵
2023-03-14

如果在您的情况下可行,请尝试使用会话范围,以便搜索字段值可用。

 类似资料:
  • 我通过JSONP获取一个值到我的网页。现在我想用这个值更新一个支持bean属性?如何处理?提前谢谢。 更新:好的,我的问题是有JavaScripts、JSF Ajax调用和Webservices,我必须看看什么时候触发了哪个动作。我想我需要更详细地描述我的处境。 我的支持bean: 我的xhtml页面: 我的Javascript文件: 页面渲染后我有三个阶段。preSaveCaseButton应该

  • 我想知道如何更新PrimeFaces数据表行。这是我的datatable照片,以便更好地了解我: ![1]: http://i.stack.imgur.com/N1jGz.png 我想为每一行选择他各自的状态,然后单击保存状态按钮来保存这些值。 这是我的xhtml页面代码: 提前感谢。

  • 问题内容: 如果我有几个股利: 我动态创建div: 如何才能使它们仅按顺序排序到已加载的div中,而不必重新加载所有div? 我认为我需要在屏幕上构建一个所有div的数据排序值的数组,然后查看新div的位置,但是我不确定这是否是最佳方法。 问题答案: 使用这个功能 您可以在添加新的div后立即调用此函数。 如果要在div中保留javascript事件,请不要像上面的示例一样使用html repla

  • 我正试图编写一个单元测试来测试两个列表的排序。我所做的是调用自定义排序比较器,然后将原始列表与排序列表进行比较。然后,我使用assertEquals来测试排序的列表和原始列表是否匹配。 假设我有一个简单的模型...病人。 控制台以相同的顺序输出这些列表,但assertEquals返回false。我甚至尝试以相同的顺序创建两个完全相同的列表,并尝试assertEquals,但它仍然返回false。

  • 行为如下: 当接收到新请求时,将对其进行处理,控制器将请求发送到外部设备并等待其应答。 此应答由接收。因此,当答案到达时,接收到的信息将保存在数据库中,并向发送一个信号以唤醒它。 当这个控制器被唤醒并试图从数据库中检索更新的信息时,我的问题就来了。这些信息不是刚刚存储的信息,而是以前存储的信息。 我已经检查了数据是否被正确地存储,它是正确的。在解锁ClientController之前,新数据在数据

  • 属性操作 HTML 属性与 DOM 属性的对应 每个 HTML 属性都会对应相应的 DOM 对象属性。 <div> <label for="username">User Name: </label> <input type="input" name="username" class="text" value=""> </div> input.id; // 'username