gpt4 book ai didi

jsf - 到达数据表列 JSF/PrimeFaces 中的 backingbean 方法

转载 作者:行者123 更新时间:2023-12-04 16:02:39 25 4
gpt4 key购买 nike

<p:commandLink> 中调用我的支持 beans 方法时无法访问它在数据表列中。

我的命令链接放在数据表之外时工作正常,但我无法直接传递选定的行变量。

这是我的代码:

              <h:form id="reviewLists" prependId="false">         
<p:messages />
<p:panel header="Beoordelingen" style="margin-bottom:10px;">
<p:dataTable value="#{reviewFinderBean.employees}" var="employee" >
<p:column headerText="Medewerker" >
<h:commandLink value="#{employee.name}" action="#{reviewFinderBean.showReviewsForEmployee(employee)}" />
</p:column>
</p:dataTable>
</p:panel>
</h:form>

当检查我的浏览器发出的 http 请求时,我看到它按预期执行了另一个帖子 (ajax),我尝试使用 prependId="false",因为我认为生成的组件名称可能无法解析,但这没有帮助。

ajax post 被触发,但不知何故从未解析为服务器上正确的 backingbean 方法

<f:setPropertyActionListener>当正确设置并在数据表列中使用时,也不会解析为任何属性。

最佳答案

首先,去掉 prependId="false"。它使 ajax 处理和更新变得更糟。

为了解决这个问题,您需要重写 bean,使其在处理表单时返回完全相同的数据模型(#{reviewFinderBean.employees}" 后面的值)按照显示表单期间的原样提交。JSF 将重新迭代它以找到调用命令的关联行。

如果您想将 bean 保留在请求范围内,那么您需要在其(后)构造函数中重新创建完全相同的数据模型。如果您的 bean 已经在 View 范围内,那么您需要确保 getter 方法完全不受业务逻辑的影响,这样数据模型就不会发生潜在的变化。

另见:

关于jsf - 到达数据表列 JSF/PrimeFaces 中的 backingbean 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16078843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com