<h:命令按钮> 在操作后不刷新页面



我们正在使用与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>

相关内容

  • 没有找到相关文章

最新更新