gpt4 book ai didi

jsf - 未调用 Primefaces commandButton 操作属性

转载 作者:行者123 更新时间:2023-12-01 23:24:54 27 4
gpt4 key购买 nike

我正在使用 primefaces 创建一个 JSF 应用程序。基本上我有这个看法。有一个选项卡 View ,每个选项卡都包含一个命令按钮和一个 Accordion 面板(另一种选项卡 View )。 Accordion 面板的选项卡以及其他元素,包含每个命令按钮。我的问题是第一个命令按钮(在 1 级选项卡下)在单击时正确调用操作方法,而第二个按钮(在 2 级选项卡下)没有。我应该说 tabView 和 accordionPanel 都工作正常,因为它们显示了它们应该显示的信息。

我发布了我的观点的简化版本,以便您可以看到发生了什么。

<h:form>
<p:tabView id="unitTabs" orientation="left" dynamic="true" cache="false" var="unit" value="#{unitController.getUnitsOfLoggedInUser(loginController.checkedUser)}">
<p:tab id="unitTab" title="#{unit.unitName}">

<p:commandButton value="Add Lecture" action="#{unitController.setTemporary(unit)}" onclick="createLectureDialog.show()">

<p:accordionPanel id="lectureTabs" value ="#{lectureController.getLecturesForUnit(unit)}" var="lecture" dynamic="true" cache="false">

<p:tab title="#{lecture.lectureName}">
<p:commandButton value="Add Criterion" action ="#{lectureController.setTemporary(lecture)}" onclick="createCriterionDialog.show()" >
</p:tab>
</p:accordionPanel>
</p:tab>
</p:tabView>
</h:form>

我做错了什么?谢谢

最佳答案

此构造要求 value 中的 EL 表达式<p:tabView> 的属性和 <p:accordionPanel>在处理表单提交期间返回与初始显示期间相同的完全相同值。

如果 bean 是请求范围的和/或值在幕后依赖于基于请求的参数或变量,因此它在每个请求上返回不同的值,那么它将失败,因为 JSF 无法找到被调用的按钮.为了解决这个问题,bean需要放在 View 范围内,getter方法不应该包含任何业务逻辑,或者任何基于请求的参数或变量应该保留在后续请求中。

另见:

关于jsf - 未调用 Primefaces commandButton 操作属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126074/

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