2012-09-10 63 views
1

這是我第一次與wicket,所以請忍受我。在Wicket中,在HTML中手工編寫什麼以及我會生成什麼?

檢票中的大多數示例都顯示瞭如何使用檢票ID,您可以自動用不同的東西替換內部的HTML。使用這些知識,我手寫了一個HTML格式的表單,其中包含大量的格式和JQuery,用於不同的事情,並且只使用Wicket自動生成2個選擇框的信息。但是,當我試圖解析Wicket方面提交的信息時,我感到困惑。

我發現很容易的唯一方法是使用RequestCycle.get().getRequest().getRequestParameters().來獲取所有傳遞的信息。它有效,但我不認爲這是使用Wicket的理想方式。似乎還有一種請求處理程序的方式,但我不知道從哪裏開始,特別是因爲大量文檔已經過時了新的6.0.0版本。

什麼是我應該使用Wicket的形式?我手寫大部分表單,只讓Wicket自動生成一些信息,並使用RequestCycle?我寫一個框架表單,Wicket自動生成其餘部分,並使用大量提交處理程序?這是在一個易於理解的初學者教程中記錄的地方?

注意:我的表單有幾個動態創建的字段(想想「點擊這裏添加更多選項」),並在後臺使用AJAX提交,驗證並清除。這可能會使Wicket方面變得複雜,但是功能要求很複雜

+1

在日常檢票使用中,根本不使用RequestCycle。您可以創建表單組件(請參閱示例)並讓它們爲您處理參數。所需的代碼量很小。您特別不會在Wicket中自行處理請求參數,這是您正在採取的第一個錯誤回合;-) –

+1

@ Carl-EricMenzel來自PHP背景,對我來說很有意義。但是我意識到wicket絕對沒有像PHP :-) – TheLQ

+0

大多數其他框架都是這樣的,所以這是完全可以理解的:-)克服像PHP,Struts等東西的習慣是Wicket教學的障礙之一。 –

回答

4

使用Wicket,您可以將HTML標記視爲模板。標記實際上幾乎是標準的HTML。您可以(也應該)爲將會附加某些行爲或邏輯(表單,按鈕,鏈接)或需要某些服務器端處理(例如表單組件或嵌套自定義組件或面板)的所有內容定義wicket:id屬性。所有其他內容都將在響應中輸出,因爲它在標記中。

Wicket將處理表單提交併處理您的請求。在Wicket中,表單組件通常在服務器端定義,並添加到Form組件中。在Form組件的onSubmit()中,Wicket已經處理了請求,提交的值將在FormComponent的模型中提供。

因此,Wicket處理表單提交的理想方式是涉及服務器端創建表單中的任何組件。

下面的Wicket Examples頁面顯示了一個基本的Form,其中有一些FormComponentsWicket Examples - forminput。你甚至可以看到它的source code

此外,您可能會發現以下Wicket wiki頁面很有用:How to do things in Wicket - Forms

關於動態組件創建,無論何時需要創建新的動態組件,都可以創建一個創建組件服務器端的Ajax請求(例如,包裝在ListView中),並在ajax中刷新標記回電話。

這裏有這樣一個列表的例子:Wicket in action - Building a ListEditor form component

我想補充,我發現Wicket in Action本書對於學習檢票的優秀資源。 第6章 - 使用表格處理用戶輸入闡述了這個問題。

+0

哇,我幾乎只想使用'RequestCycle',因爲這對於我正在編寫的小項目來說似乎格外複雜。我可能會等到使用它,直到我在我的大型項目中使用wicket – TheLQ

+0

它實際上比代碼更容易編碼。在Wicket中做Ajax是一件小事(如果不可用,甚至會回到標準請求)。當然,這將是非常單調乏味的,取決於你已經獲得客戶端的行爲/邏輯的數量 –

相關問題