我们正在使用与a4j标签。
在这里,我们从数据库检索数据后,单击按钮。即使数据在服务器中可用,它也不会显示在视图上。手动刷新网页后会导致数据显示。
是代码片段…这里有一些代码
<rich:tab id="menu5" label="Recall">
<ui:include src="/pages/mctrans/reCallMcifTrans.xhtml" />
</rich:tab>
reCallMcifTrans.xhtml包含以下代码
<h:commandButton type="button" id="reCallbutton1" value=" Search "
styleClass="commandExButton">
<a4j:support event="onclick" id="ajsf12"
oncomplete="javascript:alert('Search Completed');javascript:document.body.style.cursor='default';"
action="#{mcifRecallTransBean.reCallSearch}" reRender="reCallgrid1" />
</h:commandButton>
看起来你正在使用RichFaces 3.3。所以,你不需要<h:commandButton
和<a4j:support>
因为你可以用<a4j:commandButton>
来做这个。你可以这样重构你的代码:
<a4j:commandButton type="button" id="reCallbutton1" value="Search"
styleClass="commandExButton"
action="#{mcifRecallTransBean.reCallSearch}"
reRender="reCallgrid1"
oncomplete="javascript:alert('Search Completed');javascript:document.body.style.cursor='default';" />
确保您的reCallgrid1
组件在<a4j:commandButton>
和<h:form>
中可用。
由于您还希望在单击按钮时搜索数据行为时添加Wait,因此您可以使用<a4j:status>
和<a4j:commandButton>
,如<a4j:status>
演示中所示。下面是一个基本的例子:
<a4j:commandButton type="button" id="reCallbutton1" value="Search"
styleClass="commandExButton"
action="#{mcifRecallTransBean.reCallSearch}"
reRender="reCallgrid1" />
<!-- Note that there's no oncomplete in this case -->
<a4j:status for="reCallbutton1">
<f:facet name="start">
<h:graphicImage value="/res/images/wait.gif"/>
</f:facet>
</a4j:status>
最后但并非最不重要的是,您应该将托管bean切换到请求作用域,并使用RichFaces强大的<a4j:keepAlive>
来模拟JSF 2 @ViewScoped
。您甚至可以在托管bean上以注释的形式使用它(不需要额外的配置):
@KeepAlive
public class McifRecallTransBean {
//managed bean code here...
}
当您在bean中使用请求参数时,您需要通过您的操作再次传递它们:
<h:commandButton type="button" id="reCallbutton1" value="Search" styleClass="commandExButton">
<a4j:support event="onclick" id="ajsf12" oncomplete="javascript:alert('Search Completed');javascript:document.body.style.cursor='default';" action="#{mcifRecallTransBean.reCallSearch}" reRender="reCallgrid1" />
<f:param name="param1" value="#{param['param1']}" />
<f:param name="param2" value="#{param['param2']}" />
</h:commandButton>