2012-07-20 30 views
-5

將JS數組值傳遞給後臺bean如何使用f:setPropertyActionListener或任何其他方法將JavaScript中的數組(基本上是由用戶選擇的某些錶行)傳遞到後臺bean數組?使用<f:setPropertyActionListener />

回答

3

沒有更具體的我會假設你正在談論一個命名數組或首先需要轉換爲字符串的JSON對象。

<script type="text/javascript"> 
function callBackingBean(myJSON) { 
    var stringArray = JSON.stringify(myJSON); 
    jQuery('#theClientIdOfTheField')[0].value = stringArray; 
    var button = jQuery('#theClientIdofthebutton'); 
    button.click(); 
} 
</script> 

<h:inputHidden id="input1" value="#{managedBean.managedProperty}" /> 
<h:commandButton id="buttonid" style="display: none;" /> 

實質上的策略是使用一個隱藏的輸入,是以JSON轉換字符串作爲它的值,而隱藏按鈕,則從Javascript調用。它甚至不需要監聽器或操作,但是生成的回發會導致字符串被更新爲託管屬性。

+0

你好楓,因爲我有更多的然後一行可以請你幫我怎麼做? – amRika 2012-07-20 12:49:04

+0

@ user1501345我假設您使用的是dataTable,並且您在詢問如何將每行的JSON對象發送到託管屬性,這告訴我您可能不太瞭解dataTable組件。大多數第三方數據表控件都內置了使其數據同步到託管屬性非常簡單的功能,因此,如果不理解完整的用例,我不得不假定你正在做這個完全錯誤的事情。 – 2012-07-20 13:04:25

+0

你知道嗎,你只需要以長格式編寫'jQuery'一次?通過將代碼封裝在'(function($){....})(jQuery);'中,無論是否使用了noConflict,都可以使用'$'。你可以簡單地使用'.val(...)'而不是'[0] .value = ...' – ThiefMaster 2012-07-20 13:08:03

1

使用f:setPropertyActionListener不是適合此問題的解決方案。我建議你創建h:inputHidden字段,將它綁定到一個bean屬性並使用javascript更新它的值(在那裏設置數組信息)。表單提交後,您的bean將會收到您在使用javascript之前設置的值。

+0

可以請你幫我,我不知道如何每次更新一個隱藏的領域新的一排。這將是真正的幫助完整,如果你張貼代碼或sumthing .. thanx提前 – amRika 2012-07-20 11:44:05

+0

如果你解釋確切的用例會更好。所以我們可以知道你在做什麼。 – 2012-07-20 11:49:20

相關問題