2015-04-21 78 views
0

我在我的項目上使用JSF。 我的場景是我有一個很多輸入字段的表單,並且在調用a4j:commandButton上的動作之前,我將使用javascript將輸入字段轉換爲JSON數據。 我還沒有測試過一個非常大的窗體,我的當前窗體似乎在'onclick'上正確提交。在屬性onclick上寫入javascript會在執行動作之前完成嗎?

我的問題是,所有寫在'onclick'屬性上的JavaScript都會在運行'action'之前先完成?

我已經閱讀了一些網絡上的文章,它說 onclick =發送Ajax請求之前調用的JavaScript代碼。 但是,它並沒有說它會在調用'action'之前完成所有的javascript操作'

你能幫我解決這個問題嗎? 謝謝!

下面是一個示例代碼

function transformToJson(object){ 
    //transform all input fields to json data 
} 
<a4j:commandButton onclick="submitJsonObject(transformToJson('.myForm'))" 
    value="Save" 
    action="#{bean.save}"> 
</a4j:commandButton> 


<a4j:jsFunction name="submitJsonObject"> 
    <a:actionparam name="param1" assignTo="#{model.jsonData}" /> 
</a4j:jsFunction> 

的submitJsonObject是A4:jsFunction,它實際上將調用Action =「#{前jsondata發送到我的模型,那份transformToJson和submitJsonObject完成bean.save}「?

+0

你能分享一些你正在討論的代碼嗎? – Cristik

+0

你真的需要使用jsf嗎? – Kukeltje

+0

嗯,是的,我需要,還有其他的保存將保存按鈕不斷,不只是傳輸jsonData,我很抱歉,代碼示例中不清楚。 –

回答

0

首先瀏覽器在onclick方法返回之前不應該提交任何數據,因爲返回false將表示瀏覽器根本不會提交。

在所有情況下和框架我已經看到生成的代碼將既可以使用瀏覽器自身的內部提交,也就是說沒有額外的代碼將被添加到onclick事件用戶定義的代碼之後添加任何需要的代碼在onclick處理程序中。

如果有疑問請使用您的瀏覽器檢測工具,但假設所有代碼在提交前都會被執行,這是相當安全的。

相關問題