Form大概是動態web中使用最多的吧,在wicket中提供了靈活的form處理和呈現. 可以實現強大的功能,同時使用起來也是很簡單的. 看幾個示例就知道如何使用了, 下面是一個基本form的示例: 代碼下載: http://bbs.hexiao.cn/read.php?fid=9&tid=16&fpage=1 所需庫文件下載: http://bbs.hexiao.cn/read.php?fid=9&tid=12&fpage=1 java code: // Add a FeedbackPanel for displaying our messages ? ? ? ? ? ?FeedbackPanel feedbackPanel = new FeedbackPanel("feedback"); ? ? ? ? ? ?add(feedbackPanel);
? ? ? ? ? ?// Add a form with an onSubmit implementation that sets a message ? ? ? ? ? ?add(new Form("form") { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("the form was submitted!"); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ?});
? ? ? ? ? ?// 測試button form ? ? ? ? ? ?Form buttonForm = new Form("buttonForm") { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("點擊了buttonForm."); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ?};
? ? ? ? ? ?Button button1 = new Button("button1") { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("button1.onSubmit 被點擊了"); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ?}; ? ? ? ? ? ?buttonForm.add(button1);
? ? ? ? ? ?Button button2 = new Button("button2") { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("button2.onSubmit 被點擊了"); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ?}; ? ? ? ? ? ?button2.setDefaultFormProcessing(false); ? ? ? ? ? ?buttonForm.add(button2);
? ? ? ? ? ?add(buttonForm); ? ? ? ? ? ?// 測試 Submit link in form ? ? ? ? ? ?Form submitForm = new Form("submitForm") { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("Form onsubmit"); ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ?}; ? ? ? ? ? ?add(submitForm); ? ? ? ? ? ?SubmitLink internal = new SubmitLink("internal") { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("internal onsubmit"); ? ? ? ? ? ? ? ? ?}; ? ? ? ? ? ?}; ? ? ? ? ? ?submitForm.add(internal);
? ? ? ? ? ?SubmitLink external = new SubmitLink("external", submitForm) { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("external onsubmit"); ? ? ? ? ? ? ? ? ?}; ? ? ? ? ? ?}; ? ? ? ? ? ?add(external);
? ? ? ? ? ?// 測試TextField And TextArea ? ? ? ? ? ?final Input input = new Input(); ? ? ? ? ? ?Form textForm = new Form("textForm", new CompoundPropertyModel(input)) { ? ? ? ? ? ? ? ? ?protected void onSubmit() { ? ? ? ? ? ? ? ? ? ? ? ?info("input :" + input); ? ? ? ? ? ? ? ? ? ? ? ?if (input.bool.booleanValue()) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?info("Ok, ok... we'll check it"); ? ? ? ? ? ? ? ? ? ? ? ?} else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?info("So you don't want it checked huh?"); ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ?}; ? ? ? ? ? ?add(textForm); ? ? ? ? ? ?textForm.add(new TextField("textField")); ? ? ? ? ? ?textForm.add(new TextField("integer", Integer.class)); ? ? ? ? ? ?textForm.add(new TextArea("textArea")); ? ? ? ? ? ?textForm.add(new CheckBox("bool"));
Html code: <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml" > <head> ? <title>Wicket Examples - component reference</title> ? <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <wicket:link><a href="CheckAndRadio.html">[go to the CheckAndRadio]</a></wicket:link> <h2> Feed back info </h2> ? ? ? <span wicket:id="feedback">feedbackmessages will be put here</span> ? ? ?<h1>wicket.markup.html.form.Form</h1>
? ? ?<p> ? ? ?A Form is a component that has special interaction with nested form components. ? ? ?Form components are components that extend from wicket.markup.html.form.FormComponent, ? ? ?and which are called controls in the HTML specification. Examples of such controls ? ? ?are textfields, checkboxes and radio buttons. ? ? ?Users generally "complete" a form by modifying its controls (entering text, ? ? ?selecting menu items, etc.), before submitting the form usually by clicking on ? ? ?a submit button. On a form submit, the form normally goes through a processing cycle of ? ? ?validation, model updating of the nested controls, possibly persisting (with cookies) ? ? ?the model values of the controls and calling the form's onSubmit method. ? ? ?</p> ? ? ?<p> ? ? ?This example shows you the basic Form itself. It has no nested controls, but it does ? ? ?have an implementation of onSubmit, which sets a feedback message, and it works together ? ? ?with a feeback panel (a panel that lists any feedback messages that were set). ? ? ?</p> ? ? ?<p> ? ? ? <form wicket:id="form"> ? ? ? <input type="submit" value="click me to submit the form and display a message" /> ? ? ? </form> ? ? ? ? ? ? <h1> button form </h1> ? ? ? <form wicket:id="buttonForm"> ? ? ? ? ? ?<input type="submit" value="non wicket submit button"/> ? ? ? ? ? ?<input wicket:id="button1" type="submit" value="default wicket button" /> ? ? ? ? ? ?<input wicket:id="button2" type="submit" value="wicket button with immediate == true" /> ? ? ? </form> ? ? ? ? ? ? <h1> Submit Link Form</h1> ? ? ? <form wicket:id="submitForm"> ? ? ? <a wicket:id="internal">Internal SubmitLink</a> ? ? ? </form> ? ? ? <a wicket:id="external">External SubmitLink</a> ? ? ?</p> ? ? ?<h1>TextArea and TextField form</h1> ? ? ?<form wicket:id="textForm">
? ? ? ? ? ?<table style="border: 2px dotted #fc0; width: 300px; padding: 5px;"> ? ? ? ? ? ? <tr> ? ? ? ? ? ? <td>some plain text</td> ? ? ? ? ? ? <td><input type="text" wicket:id="textField" /></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? <td>an integer value</td> ? ? ? ? ? ? <td><input type="text" wicket:id="integer" /></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? <td>text Area</td> ? ? ? ? ? ? <td><textarea wicket:id="textArea" rows="2" cols="15">Input comes here</textarea></td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? <td valign="top">I want it checked!</td> ? ? ? ? ? ? <td> ? ? ? ? ? ? <input type="checkbox" wicket:id="bool" /> ? ? ? ? ? ? </td> ? ? ? ? ? ? </tr> ? ? ? ? ? ? <tr> ? ? ? ? ? ? <td colspan="2" align="center"> ? ? ? ? ? ? ? <input type="submit" value="submit" /> ? ? ? ? ? ? </td> ? ? ? ? ? ? </tr> ? ? ? ? ? ?</table>
? ? ? </form> ? ? ? ? ? ? </body> </html>
截圖:

|