Primefaces commandButton action属性未被调用

时间:2012-06-20 18:41:37

标签: jsf java-ee primefaces

我正在使用primefaces创建一个JSF应用程序。基本上我有这个观点。有一个标签视图,每个标签包含一个命令按钮和一个折叠面板(另一种标签视图)。手风琴面板的选项卡以及其他元素包含每个命令按钮。我的问题是,第一个命令按钮(在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>

我做错了什么?感谢

1 个答案:

答案 0 :(得分:4)

此构造要求在处理表单提交时,value<p:tabView>的{​​{1}}属性中的EL表达式返回完全相同的值是在初次展示期间。

如果bean是请求作用域和/或值取决于基于请求的参数或变量的幕后,因此它会在每个请求上返回不同的值,那么它将失败,因为JSF无法找到已被调用的按钮。要修复它,需要将bean放在视图范围内,并且getter方法不应包含任何业务逻辑,或者在后续请求中应保留任何基于请求的参数或变量。

另见: