我遇到了a4j:commandButton和reredering问题
问题描述:
下面的代码显示了我的应用程序中失败的东西。 这是一个快速添加信息表单,填写表单并提交它添加一个新的条目到数据库并同步我的数据库。这一切都是用ajax完成的。第一个表单提交正确发生,但第二个表单无法运行所需的ActionListener。第二种形式是发布到服务器,但saveAction没有被调用。正如你所看到的,我是一个真正的初学者,拥有这些技术......如果有人看到了这个问题,这将是非常有益的!我遇到了a4j:commandButton和reredering问题
<rich:simpleTogglePanel id="quickaddActivitySimpleToogle"
switchType="client"
opened="false"
label="#{lang.activityModule_quickAdd_panelTitle}">
<p><a4j:form id="quickAddForm">
<h:outputLabel for="activityNameInput"
value="#{lang.activity_name_dp}" />
<h:inputText id="activityNameInput"
value="#{activityController.quickActivityAdd.name}">
</h:inputText>
<rich:spacer width="20px" />
<h:inputHidden id="activityInternalNameInput"
value="#{activityController.quickActivityAdd.internalName}" />
<rich:spacer width="20px" />
<a4j:commandButton id="activityQuickAddFormSubmitBtn"
reRender="activityListTable,quickAddForm"
actionListener="#{activityController.saveActivity}"
value="#{lang.saveBtn_header}" />
</a4j:form></p></rich:simpleTogglePanel>
在此先感谢。
ollie314
答
- 我建议把
<a4j:form>
作为最外层的元素 - 把
immediate="true"
上commandButton
绕过验证 - 不
reRender
整个表单 - 添加<h:panelGroup>
里面,改为改写它。
我解决我再rendreing与封闭simToogglePanel到A4J问题的一部分:outputPanel。现在第二个Ajax请求正常工作,但表单不刷新... Grrr! :) – ollie314 2010-04-26 14:13:56