2011-06-10 47 views
1

由於reRender選項的原因,我需要使用a4j:commandButton而不是h:commandButton<a4j:commandButton>不會啓動該操作

當我使用h:commandButton,它工作正常(但關閉過程沒有重新解析):

<h:commandButton id="save" action="#{bean.save}" value="#{conf.buttonSave}"/> 

並使用相同的東西不(行動甚至沒有全無重新呈現選項啓動):

<a4j:commandButton id="save" action="#{bean.save}" value="#{conf.buttonSave}"/> 

我也試過:

<h:commandButton id="save" action="#{bean.save}" value="#{conf.buttonSave}"> 
<a4j:ajax event="click" reRender="table" /> 
</h:commandButton> 

但是,如果我添加a4j:ajax它與a4j:commandButton相同的問題,操作未啓動。

你能幫我嗎?

+0

「a4j:commandButton」沒有'reRender'屬性。我對Richfaces並不熟悉,但是如果你省略'reRender',預期的行爲是什麼?按鈕的行爲是否像非ajax按鈕? – 2011-06-10 09:31:40

+0

它應該重新渲染基於datalist chenges的數據表..但問題是,即使沒有reRender選項,a4j:commandButton也不啓動該行動。 – gaffcz 2011-06-10 09:38:50

+0

好的,我認爲你誤解了我的評論。我的意思是在你的例子中沒有'reRender'屬性。如果您使用該屬性會發生什麼? – 2011-06-10 09:41:12

回答

2

您標記了此JSF 2.0。所以你使用的是JSF 2.0。只需使用JSF 2.0內置的<f:ajax>標籤即可。

<h:commandButton id="save" action="#{bean.save}" value="#{conf.buttonSave}"> 
    <f:ajax render="table" /> 
</h:commandButton> 

注意<h:dataTable id="table">必須相同<h:form>上述方式中。否則,您需要改爲render=":table"。另請注意,您必須在模板中使用<h:head>而不是<head>,以便自動包含所有必要的JavaScript。

+0

謝謝,就是這樣! – gaffcz 2011-06-10 10:49:04

+0

不客氣。 – BalusC 2011-06-10 10:51:40