作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在单击按钮时提交数据表,但在第一次单击时不会调用该操作。这是我的代码:
<h:panelGrid id="addToThisDepartmentPanel">
<h:outputText value="#{messageDataBean.message}" rendered="#{messageDataBean.isSuccess eq false}" style="color:red" id="addToThisDepartmentMessage"/>
<h:form>
<h:dataTable value="#{systemResultViewUtil.systemUserDetailDataBeansList}" var="departmentdetail" id="addToThisDepartmentDataTable" rendered="#{systemResultViewUtil.systemUserDetailDataBeansList.size() gt 0}">
<h:column>
<f:facet name="header">
Name
</f:facet>
<h:outputText value="#{departmentdetail.name}" style="text-align: left;padding-right: 120px" />
</h:column>
<h:column>
<f:facet name="header">
Current Department
</f:facet>
<h:outputText value="#{departmentdetail.depName}" style="text-align: left;padding-right: 120px" />
</h:column>
<h:column>
<f:facet name="header">
Add To This
</f:facet>
<h:selectBooleanCheckbox value="#{departmentdetail.cheked}" style="text-align: left;padding-right: 120px"/>
</h:column>
</h:dataTable>
<a4j:commandButton oncomplete="if(#{messageDataBean.isSuccess eq true}){ closeAddToThisDepartmentDialog()}" value="Add TO This Department" action="#{departmentServiceBean.addEmployeeToThisDepartment}" id="addToThisDepartmentButton"
render=":addToThisDepartmentMessage :message" execute=":addToThisDepartmentDataTable" />
</h:form>
</h:panelGrid>
<a4j:commandButton>
Action 被调用。但它不会在第一次点击时被调用。
最佳答案
此问题称为 JSF spec issue 790 .如果您对某些内容进行 ajax 渲染,这些内容又包含 <h:form>
,那么它的 View 状态将丢失,这导致该表单内的第一个操作不会调用任何东西。在第一个 Action 的 ajax 响应中,表单将获得新的 View 状态,因此任何后续 Action 都会成功。
这计划在即将到来的 JSF 2.2 中修复。但是现在使用 JSF 2.0/2.1,您必须引入一种解决方法。您首先需要提供 <h:form>
固定 ID,即 yourFormId
在下面的例子中:
<h:panelGrid id="addToThisDepartmentPanel">
...
<h:form id="yourFormId">
...
render
中引用它属性也是:
<f:ajax ... render=":addToThisDepartmentPanel :yourFormId" />
<a4j:xxx>
组件。
<a4j:commandButton ... render=":addToThisDepartmentPanel :yourFormId" />
关于jsf - <a4j :commandbutton> action is only invoked on second click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094615/
我是一名优秀的程序员,十分优秀!