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

缺少使用primefaces datatable并延迟加载和viewparam的参数

长孙鸿振
2023-03-14

所以,我有一个这样的日期:

<p:dataTable var="object" value="#{objectBean.objects}"
            paginator="true" rows="10" editable="true" id="tableObjects"

            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="5,10,15" style="border: 0px">

            <p:column sortBy="#{object.etc}">
                ..
            </p:column>

            ...

            <p:column sortBy="#{object.someValue}" id="sucessoColumn"
                headerText="Value">
                <p:cellEditor>
                    <f:facet name="output">

                        <h:outputText  value="#{object.someValue}" />
                    </f:facet>
                    <f:facet name="input">
                        <p:selectOneMenu value="#{object.someValue}" effect="fade"
                            id="opt">
                            ...
                        </p:selectOneMenu>
                    </f:facet>
                </p:cellEditor>
            </p:column>



            <p:column id="bColumn" headerText="Options">

                <p:rowEditor />
            </p:column>
            <p:ajax event="rowEdit" listener="#{objectBean.update}"></p:ajax>

        </p:dataTable>

在接收如下参数的页面上:

<f:metadata>
        <f:viewParam name="id" value="#{objectBean.object}"
            converter="#{objectConverter}" converterMessage="Converter error !"
            required="true" requiredMessage="Missing object !" />
    </f:metadata>

加载页面时,没有任何问题,一切正常。但当我单击下一页或尝试编辑行时,viewparam中的“必需消息”就会出现。看起来,当数据表上的任何内容发生更改时,param就会消失。

有什么想法吗?非常感谢。

共有2个答案

谭山
2023-03-14

也许我的回答太迟了,但我也有和你一样的问题。

我将从你的代码中解释我的解决方案。

我不知道为什么,但是当你使用懒惰加载和单元格编辑器时,rowEdit功能不起作用。

<p:ajax event="rowEdit" listener="#{objectBean.update}"></p:ajax>

如果从代码中删除cellEditor,您将看到objectBean。更新方法将运行。

我删除

<p:ajax event="rowEdit" listener="#{objectBean.update}"></p:ajax>

在每一个单元格编辑器中,我都会把代码改成这个。

<p:column sortBy="#{object.someValue}" id="sucessoColumn" headerText="Value">                      <p:cellEditor>
  <f:facet name="output">
   <h:outputText  value="#{object.someValue}" />
  </f:facet>
  <f:facet name="input">
   <p:selectOneMenu value="#{object.someValue} effect="fade" id="opt">
    <p:ajax event="valueChange" process="@this" listener="#{objectBean.update(object)}"/>
   </p:selectOneMenu>
  </f:facet>
 </p:cellEditor>
</p:column>

在Bean中,将更新方法从第一个更改为第二个。

public void update(RowEditEvent event) {
    Object editingRow = (Object) event.getObject();
    objectService().saveOrUpdate(editingRow);
}

public void update(HospitalDoctor obj) {
    objectService().saveOrUpdate(obj);
}

这样我就解决了我的问题,希望对别人有所帮助。

李宁
2023-03-14

问题在于我们使用的Bean的范围。似乎每次数据表的状态改变时,它都会对bean发出另一个请求。如果该参数的作用域是请求,则该参数仅可用于第一个请求。

更改为ViewScope解决了一半的问题。datatable正常工作,但消息仍然显示。使用“required”和“requiredMessage”属性解决了问题的最后一部分,一切都很顺利。

 类似资料:
  • 描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l

  • 问题内容: 如果这是完全相同的内容,请纠正我,我知道这个话题经常被讨论,但是找不到确切的答案。 问题: 在MVC Web应用程序中处理Hibernate对象的最佳实用解决方案是什么? 细节: 我正在使用Hibernate,并希望在可能的情况下利用延迟加载。 我正在使用MVC风格的Webapp。 我讨厌获得延迟加载初始化异常。 我讨厌不得不在事务之间重新连接Hibernate对象。 选项: 渴望装载

  • 问题内容: 我在JPA实体中的延迟加载属性有问题。我读过许多类似的问题,但它们与spring或hibernate有关,并且他们的后代不适用或没有帮助。 该应用程序是在Wildfly应用程序服务器上运行的JEE和JPA2.1。有两个实体,DAO会话bean和servlet将它们放在一起: 当我运行此代码时,它失败并显示: 我对WebLogic / JPA1使用了非常相似的模式,并且运行平稳。任何的想

  • 问题内容: 我想知道在node.js中使用是否等效于延迟加载? 例如,如果我有一个函数需要代码中其他任何地方都不需要的特定node.js包,那么我最好在该函数内部使用它,以便仅在调用该函数时才包含所需的包。 我还不确定是否会由于缺乏对node.js架构的了解而在性能方面有所改善?我想它每次与服务器的连接都会使用更少的内存。但是,当它必须读取程序包时,它会增加磁盘的I / O吗,还是将其添加到内存中

  • 这是从这里开始的后续行动。 我正在实现一个表,它将数据异步加载到表单元格中。问题是,表单元格有时无法正确更新。有时它会以某种方式“挂起”并永远显示“加载...”。实际值只有在我在表中滚动一点时才会更新。 要复制,请在表格中快速向下滚动应用程序。某些单元格不会显示“延迟加载”值,而是显示占位符字符串。 延迟加载属性如下所示: } 应用程序如下所示: 完整的可运行代码可以在这里找到。

  • 有很多关于“懒惰”的例子和文档。也许我没有明白,但为什么要用它呢?实例化bean成本