2016-07-26 22 views
0

我有這個號碼:inputTextarea:有沒有更好的方式來更新我的支持bean而不提交表單?

<p:inputTextarea id="inputTextArea" value="#{myBean.data}}"> 
    <f:ajax event="blur" /> 
</p:inputTextarea> 

<p:inputTextarea id="inputTextArea" value="#{myBean.data}" /> 

因爲我移到別處的提交表單按鈕,myBean.data按鈕

所以我這樣做,當點擊保持空

這似乎工作!

但我有一種感覺,有一個更優雅的方式來做到這一點。 我只需要從inputTextarea寫入到bean的值,以便當我單擊另一個表單中的按鈕時,數據將可用。

有什麼建議嗎?

+1

我覺得這很優雅。您明確聲明您想要在離開該字段時將值發送到服務器。所以更難以找到更優雅的方式。但是,如果您仍然只希望在「提交」中提交,那麼請發佈不起作用的代碼,也許有人可以幫助您糾正錯誤。 – Kukeltje

+0

謝謝。我想也許有一個專門的功能或關鍵字來做到這一點。 – Tim

+0

正確的是有一個專用的關鍵字/功能。它是'f:ajax'(或者'p:ajax');-) – Kukeltje

回答

0

這是有點錯了。你必須瞭解JSF的生命週期。要做出簡短的回答,在你的按鈕上你應該「處理」「@this(按鈕本身)和inputTextArea」。然後一切都會好起來的。作爲進一步的性能改進,您可以在同一個按鈕上使用「partialSubmit = true」,這樣只有所述字段(輸入和按鈕)與表單一起提交。所以,你只需要

<p:inputTextarea id="inputTextArea" value="#{myBean.data}" /> 

(最終沒有雙括號),然後

<p:commandButton ..... process = "@this inputTextArea" .... partialSubmit = "true" /> 

但相信我,如果你打到現在這個(很簡單)的問題...你需要獲得一個嚴肅的JSF書籍,並開始熱愛Primefaces手冊。

+0

首先看到我上面的評論(你有通知對嗎?),其次,OP應該首先創建一個[mcve]如果OP想讓我們看看移動按鈕時出現的問題。 – Kukeltje

+0

除此之外,如果您在表單中有幾十個輸入,並且您使用'process =「@ this inputTextArea1 inputTextArea2 ...inputTextArea99',使用你的解決方案並沒有真正的區別(如果你包含所有的id,它和默認的(@ form')一樣。在每個輸入中使用'p:ajax'並且使用'partialSubmit =「真正的''('p:ajax'上的'process'的默認值已經是'@this')是不同jsf階段的幾個部分的更高性能,然後(除恢復視圖外,MyFaces的視圖緩存也進入在這裏玩)所以沒有更多的信息沒有對錯。 – Kukeltje

相關問題