源码如下:
InputCore.java
/**
* 项目名称:TapestryStart
* 开发模式:Maven+Tapestry5.x+Tapestry-hibernate+Mysql
* 网址: http://www.flywind.org
* 版本:1.0
* 编写:飞风
* 时间:2012-02-29
*/
package com.tapestry.app.pages;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.internal.services.StringValueEncoder;
public class InputCore {
@Property
@SuppressWarnings("unused")
private StringValueEncoder stringEncoder = new StringValueEncoder();
/* Checkbox */
@Property
@Persist
@SuppressWarnings("unused")
private boolean checkboxValue;
/* Checklist */
@Property
@Persist
@SuppressWarnings("unused")
private List<String> checklistSelectedValues;
@Property
@SuppressWarnings("unused")
private final String[] STATIONERY = { "Pens", "Pencils", "Paper" };
/* DateField */
@Property
@Persist
private Date dateValue;
// We could return a DateFormat, but instead we'll return a String which DateField will coerce into a DateFormat.
public String getDateFieldFormat() {
return "dd/MM/yyyy";
}
/* Palette */
@Property
@Persist
private List<String> paletteSelectedValues;
@Property
@SuppressWarnings("unused")
private final String[] PETS = { "Dog", "Cat", "Parrot", "Mouse" };
/* Password */
@Property
@Persist
@SuppressWarnings("unused")
private String passwordValue;
/* RadioGroup and Radio */
@Property
@Persist
@SuppressWarnings("unused")
private String radioSelectedValue;
/* Select */
@Property
@Persist
@SuppressWarnings("unused")
private String selectedValue;
/* TextArea */
@Property
@Persist
@SuppressWarnings("unused")
private String textAreaValue;
/* TextField */
@Property
@Persist
@SuppressWarnings("unused")
private String textValue;
/* Life-cycle stuff. Fields that are marked @Persist MUST be initialized here rather than where they are declared. */
void setupRender() {
if (dateValue == null) {
dateValue = new Date();
}
if (paletteSelectedValues == null) {
paletteSelectedValues = new ArrayList<String>();
}
}
}
InputCore.tml
<html t:type="layout" title="tapestryStart Index" t:sidebarTitle="Framework Version"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter">
<style type="text/css">
body
{ font-family: Arial, Helvetica, sans-serif; font-size: 13px; }
form
{ text-align: center; }
table
{ font-family: Arial, Helvetica, sans-serif; font-size: 13px; font-weight: normal; margin: auto; }
th
{ background-color: #bee; text-align: center; padding: 10px 10px; }
td
{ background-color: #eeb; padding: 10px 10px; }
td.name
{ text-align: right; vertical-align: top; }
div.t-palette { width: 460px; }
.datePicker td .topLabel { color:black; }
</style>
<form t:type="form" t:id="inputs">
<table>
<tr>
<th>Component Name</th>
<th>Use them and press Submit</th>
<th>Submitted Value</th>
</tr>
<tr>
<td class="name">Checkbox:</td>
<td><input t:type="checkbox" value="checkboxValue"/></td>
<td>${checkboxValue}</td>
</tr>
<tr>
<td class="name">Checklist:</td>
<td><input t:type="Checklist" t:model="stationery" t:selected="checklistSelectedValues" t:encoder="stringEncoder"/></td>
<td>${checklistSelectedValues}</td>
</tr>
<tr>
<td class="name">DateField:</td>
<td><input t:type="DateField" value="dateValue" t:format="prop:dateFieldFormat"/> (${dateFieldFormat})</td>
<td>${dateValue}</td>
</tr>
<tr>
<td class="name">Palette:</td>
<td><input t:type="Palette" t:model="pets" t:selected="paletteSelectedValues" t:encoder="stringEncoder"/></td>
<td>${paletteSelectedValues}</td>
</tr>
<tr>
<td class="name">PasswordField:</td>
<td><input t:type="PasswordField" value="passwordValue"/></td>
<td>${passwordValue}</td>
</tr>
<tr>
<td class="name">RadioGroup,<br/> Radio,<br/> and Label:</td>
<td>
<t:RadioGroup value="radioSelectedValue" encoder="stringEncoder">
<t:Radio t:id="radioH" value="literal:H" label="High"/><t:label for="radioH"/><br/>
<t:Radio t:id="radioM" value="literal:M" label="Medium"/><t:label for="radioM"/><br/>
<t:Radio t:id="radioL" value="literal:L" label="Low"/><t:label for="radioL"/>
</t:RadioGroup>
</td>
<td>${radioSelectedValue}</td>
</tr>
<tr>
<td class="name">Select:</td>
<td><select t:type="Select" t:model="literal:Ms,Mrs,Mr,Dr,Prof" t:value="selectedValue"/></td>
<td>${selectedValue}</td>
</tr>
<tr>
<td class="name">TextArea:</td>
<td><input t:type="TextArea" value="textAreaValue"/></td>
<td><t:textoutput value="textAreaValue"/></td>
</tr>
<tr>
<td class="name">TextField:</td>
<td><input t:type="TextField" value="textValue"/></td>
<td>${textValue}</td>
</tr>
</table><br/>
<input type="submit" value="Submit"/>
</form>
</html>
http://localhost/form/inputcore