我想了解Richfaces上a4j背后的行为。
我有一个h:form,其中包含一个h:inputText和一个a4j:commandButton。按钮操作调用我的bean中的一个方法,oncomplete显示Richfaces.showModal和一些内容。
<h:form id="i_form">
<h:inputText value="#{ordemManagedBean.formEntity.emissor.cpf}" required="true" />
<a4j:commandButton value="#{msg.labelbtn}" reRender="f_FormordemEmissorModal" oncomplete="Richfaces.showModalPanel('ordemEmissorModal');" action="#{ordemManagedBean.consultarCadastroEmissor}" />
</h:form>
外部h:form我有一个ui:decorate,它导入了我的Modal,它周围有一个form。
<ui:decorate template="/templates/ordemEmissorModal.xhtml">
<ui:param
name="beanForm"
value="#{ordemManagedBean}"
/>
问题是:当我点击按钮提交表单时,方法会被激发,并显示模态,但它只在第一次工作。当我关闭我的模态,更改输入值并提交时,方法不会被调用,我的模态显示为旧内容。我提交的第二份表格发生了什么?
提前谢谢!
要检查验证错误,您可以使用<h:message>
或<h:messages>
,在for
属性上提供<h:inputText>
的id
,并在触发请求时重新渲染<h:message>
。由于您使用的是richfaces,还有<rich:message>
或<rich:messages>
,因此功能相同,但后者具有更多附加功能。
<h:form id="i_form">
<h:inputText id="input" value="#{ordemManagedBean.formEntity.emissor.cpf}" required="true" />
<rich:message for="input" id="error" />
<a4j:commandButton value="#{msg.labelbtn}" reRender="f_FormordemEmissorModal, error" oncomplete="Richfaces.showModalPanel('ordemEmissorModal');" action="#{ordemManagedBean.consultarCadastroEmissor}" />
</h:form>
你也可以检查这个线程。Jsf验证