2012-06-08 36 views
1

由於我不是JavaScript或jsf專家,我問是否可以定義全局變量,然後將其作爲參數傳遞給動作綁定方法。 也許這是一個例子更清晰... :)使用全局變量作爲動作綁定方法的參數

在我的XHTML代碼應該是這樣的:

... 
<script type="text/javascript"> 
    var isEdit = "false"; 

    //<![CDATA[ 
    function editSelected(selBox, inputFiled) 
    { 
     var htmlstring = selBox.options[selBox.selectedIndex].text; 
     inputFiled.value = htmlstring; 
     isEdit = "true"; 
    } 
    //]]> 
</script> 

... 

<h:commandLink 
    styleClass="waiButton" 
    value="#{lakshmiMsg.commonButtonAdd}" 
    action="#{detailController.addCreator(**isEdit**)}" 
    rendered="#{detailModel.mode != detailModel.viewMode}"> 
</h:commandLink> 
... 

會是這樣的可能嗎? 如果沒有,有沒有其他方法?

回答

1

你可以通過JS改變隱藏的輸入字段。例如。

<h:inputHidden id="edit" value="#{bean.edit}" /> 

document.getElementById("form:edit").value = isEdit; 

另一種方法是乾脆不要做在JS的editSelected()工作,而是做的工作在純JSF與<f:ajax>魔術。由於代碼是不完整的,而且沒有足夠的自我記錄,所以對此的功能要求並不明確,所以我不能給出一個開創性的例子。

1

像這樣的東西可能更好地通過讓你的JavaScript更新隱藏的表單域來處理。 commandLink上的操作在服務器上計算,而JavaScript中的函數在瀏覽器中運行。

對於隱藏的表單字段,您可以在addCreator方法中檢查它(而不是作爲參數,但來自請求)以查看您是否處於編輯模式。