JSF中的commandButton问题

时间:2012-03-21 11:42:49

标签: jsf-2

简要介绍我的要求。

我有一个空的JSF dataTable 现在,当我点击一个按钮时,它应该用数据填充空的数据表。

<h:commandButton value="Search" action="#{myBean.searchresults}" />

问题:
当我点击按钮时,它会将数据填充到dataTable,但是当我第一次加载我的应用程序(刷新页面)时,会立即显示同一页面。
我希望页面不刷新本身并显示填充的数据。

过去两天我都遇到了这个问题 请提供您的建议。

提前致谢!

谢谢, 利

2 个答案:

答案 0 :(得分:3)

所以你想要一个异步提交和部分渲染?那里有<f:ajax>标签。  您可以在execute属性中指定提交上下文,在render属性中指定要更新的客户端ID。

E.g。

<h:form>
    <h:inputText value="#{bean.query}" />
    <h:commandButton value="Search" action="#{bean.search}">
        <f:ajax execute="@form" render=":results" />
    </h:commandButton>
</h:form>
<h:panelGroup id="results">
    <h:dataTable value="#{bean.results}" rendered="#{not empty bean.results}">
        ...
    </h:dataTable>
</h:panelGroup>

public void search() {
    results = service.find(query);
}

答案 1 :(得分:1)

你有searchresults返回的导航逻辑吗?

如果没有,

使searchresults成为空方法

public void searchresults(){
//logic here
}

并将f:ajax添加到按钮

<h:commandButton value="Search" action="#{myBean.searchresults}" >
    <f:ajax execute="@form" render="@form"/>
</h:commandButton>