2011-04-07 33 views
6

參數值的方式是否有可能做的事:集合F:使用JavaScript

JSF代碼(僞):

... 
<f:param name="arg" value="document.getElementById('naming').text()"> 
<h:inputText id="naming"></h:inputText> 
... 

我的意思是方法,當<f:param>設置與JS。

這是不好的做法嗎?

感謝您的幫助。

回答

6

您需要使用a4j的commandButtonactionParam才能將動態參數傳遞迴服務器。

此外,您需要bean上的一個屬性,它將接收參數值。

實施例:

<a4j:commandButton action="#{myBean.action}" value="Submit!"> 
    <a4j:actionParam name="arg" noEscape="true" value="getTheValue()" assignTo="#{myBean.myBeanArg}" /> 
</a4j:commandButton> 

這裏myBean.myBeanArg將接收由JavaScript函數getTheValue()返回的值。

注意noEscape="true"屬性。這是必要的,因爲否則value中的數據將被括在單引號中並轉義,導致不執行JavaScript。正如在documentation指出:

它可以使用在「值」屬性 JavaScript的表達或功能。在這種情況下,「noEscape」屬性應設置爲 「true」。此JavaScript調用的結果作爲值<a4j:actionparam>發送到服務器 。

4

<f:param>是服務器端的東西,而JavaScript是客戶端。所以你不能

您可以使用Ajax a4j要做到這一點,

0

你就是不行。 例如,您可以更改鏈接的屬性,並在服務器端的操作方法中獲取此屬性。

或者,您可以使用一個隱藏的輸入字段鏈接到您的bean中的屬性。