JSF 渲染的方法没有被第二次调用
JSF rendered method is not invoked in the second time
我有下一个a4j:jsFunction
<a4j:jsFunction name="renderOnBusinessErrorEvent" execute="@none" bypassUpdates="true" immediate="true"
render="securityForm">
</a4j:jsFunction>
和内部带有一些对话框的 JSF 表单
<h:form id="securityForm">
<h:panelGroup rendered="#{someCondition}">
......
</h:panelGroup>
</h:form>
在我的业务逻辑中,它必须因此执行两次。第一次一切都很好。 Rendered 方法被调用,预期的对话框出现在页面上。第二次未调用渲染方法,但模型已更改,我希望页面上不会出现该对话框。我认为这是一些 richfaces 问题,我尝试使用 f:ajax
<a4j:jsFunction name="renderOnBusinessErrorEvent" execute="@none" bypassUpdates="true" immediate="true">
<f:ajax event="begin" render=":securityForm"/>
</a4j:jsFunction>
但没有成功。第二次渲染的方法仍然没有被调用。它是什么?一些 JSF 优化或错误?解决方法是什么?
JSF 版本 2.1.19
问题出在<h:panelGroup rendered="#{someOtherCondition}">
在 h:form 之上,在第一次呈现后(在服务器端)等于 false。
但是,此 panelGroup 不是渲染的一部分。所以,我的代码:
<h:panelGroup rendered="#{someOtherCondition}">
<h:form id="securityForm">
<h:panelGroup rendered="#{someCondition}">
......
</h:panelGroup>
</h:form>
</h:panelGroup>
<h:form>
<a4j:jsFunction name="renderOnBusinessErrorEvent" execute="@none" bypassUpdates="true" immediate="true"
render="securityForm">
</a4j:jsFunction>
</h:form>
在调用 renderOnBusinessErrorEvent() 之前,我将 someOtherCondition 的值从 true 更改为 false,但我没有重新呈现该元素。实际上,在服务器端这个元素已经丢失了。看起来像是 JSF 功能,但它在某处指定了吗?
我有下一个a4j:jsFunction
<a4j:jsFunction name="renderOnBusinessErrorEvent" execute="@none" bypassUpdates="true" immediate="true"
render="securityForm">
</a4j:jsFunction>
和内部带有一些对话框的 JSF 表单
<h:form id="securityForm">
<h:panelGroup rendered="#{someCondition}">
......
</h:panelGroup>
</h:form>
在我的业务逻辑中,它必须因此执行两次。第一次一切都很好。 Rendered 方法被调用,预期的对话框出现在页面上。第二次未调用渲染方法,但模型已更改,我希望页面上不会出现该对话框。我认为这是一些 richfaces 问题,我尝试使用 f:ajax
<a4j:jsFunction name="renderOnBusinessErrorEvent" execute="@none" bypassUpdates="true" immediate="true">
<f:ajax event="begin" render=":securityForm"/>
</a4j:jsFunction>
但没有成功。第二次渲染的方法仍然没有被调用。它是什么?一些 JSF 优化或错误?解决方法是什么? JSF 版本 2.1.19
问题出在<h:panelGroup rendered="#{someOtherCondition}">
在 h:form 之上,在第一次呈现后(在服务器端)等于 false。
但是,此 panelGroup 不是渲染的一部分。所以,我的代码:
<h:panelGroup rendered="#{someOtherCondition}">
<h:form id="securityForm">
<h:panelGroup rendered="#{someCondition}">
......
</h:panelGroup>
</h:form>
</h:panelGroup>
<h:form>
<a4j:jsFunction name="renderOnBusinessErrorEvent" execute="@none" bypassUpdates="true" immediate="true"
render="securityForm">
</a4j:jsFunction>
</h:form>
在调用 renderOnBusinessErrorEvent() 之前,我将 someOtherCondition 的值从 true 更改为 false,但我没有重新呈现该元素。实际上,在服务器端这个元素已经丢失了。看起来像是 JSF 功能,但它在某处指定了吗?