09 April 2006

Mini memo while learning Wicket:

InspectorBug - 用來偵測 Wicket component 的狀態

add(new InspectorBug("inspector", this)); // this is page.
<div wicket:id="inspector" />

Component built-in Converter support

new Label("currentDate", new Model(new Date()));

其結果: 2006/4/9 - 符合 locale 的日期格式

StringResourceModel - 可參照外部的 resouce 檔,並可嵌入 java.text.MessageFormat 或是 Object

MyPage.html - <span wicket:id="resourceMessage">...</span>
MyPage.java - 
   StringResourceModel resourceModel = new StringResourceModel(
"my.message", this, null, new Object[] { "x", 1.2 });
add(new Label("resourceMessage", resourceModel));
MyPage.properties - my.message=Two parameters: {0} and {1,number,##0.00#}

其結果:Two parameters: x and 1.20

MultiLineLabel

MultiLineLabel 會自動套上 <p></p> 並且將 \n 改成 <br/>

Xml markup

override getMarkupType() {return "xml"; } 然後寫一個 MyPage.xml (內容為任意 xml) 即可產生 xml document,不過目前只有 ListView 或是 Label 等基本的 component 可以通用 xhtml 和 xml。要處理更特殊的像 WML,要自己寫 component。

Border 是 reusable decorator,最常用在替 component 外包裝一些 tag

Include 可以代入非 wicket 資源,例如 google 或是同一個app 裡的 jsp/static html

add(new Include("include", "http://www.google.com"));
<div wicket:id="include">example ...</div>

Link 可以用在 a, td, button, <input type="button" > (後面兩種都是用 onclick)

<button wicket:id="toLibraryList" >Library List</button>

PopupSetting (可用在 Link 上)

最好用 PageMap.forName() 設給一個新的 pageMap。如果和主視窗 share 同一個 pageMap,當 popup 視窗跑了5 個網頁後,主視窗就 expired了

popup 視窗是用 onclick + script 做的,但可以與需要 onclick script 的 button 合用。

ResourceLink

可用在下載檔案上,如需下載動態檔則要搭配 DynamicWebResource

Button

Form 搭配 Button 元件可以做多個 button 的處理,注意 Button 不會用到 CompoundPropertyModel

Button 設 immediate 為 true 會跳過 validation/updateModel/onSubmit() 等步驟。

PasswordTextField 預設為 Required

SubmitLink

可以在 Form 的外面進行 submit (神奇...)

<form wicket:id="form">
</form>
<a wicket:id="external">External SubmitLink</a>
SubmitLink external = new SubmitLink("external", form);

可以套用在 a 與 button


To be continue...


回響

可以用 Tag <I>、<B>,程式碼請用 <PRE>