Form
描述
管理HTML<form>的組件,其他相關組件必須被包含在組建內部。
當表單被提交時,Form組件會等待所有的內部組件顯示。當Form組件顯示時(在顯示周期,生成HTML顯示),更新屬性值和調用他們的監聽器。另外:每一個組件并不單單用來顯示HTML的責任(來顯示fotm),還處理它的表單提交。只有這些完畢后才Form組件才通知它的監聽器。
名稱 |
類型 |
方向 |
必須 |
默認 |
描述 |
listener |
IActionListener |
in |
no |
|
處理請求 |
delegate |
IValidationDelegate |
in |
no |
|
用來處理堆棧錯誤和報告的對象。單個實例共享給所有的ValidField和FieldLable組件在單個form中 |
parameters |
Object or Object[] or List |
in |
no |
|
An array of Objects to be encoded into the URL. These parameters will be decoded when the link is triggered. |
stateful |
boolean |
in |
no |
true |
如果是ture,組件被出發時需要一個活動的HttpSession,如果沒有會拋出StateLinkException異常。如果是false則沒有必要檢查。必要狀態的附加在URL上。 |
direct |
boolean |
in |
no |
true |
默認調用direct服務,這樣減少處理請求的數量 |
method |
String |
in |
no |
POST |
Tag<form>的method參數值 |
例子
Home.html
1
<html>
2
<head>
3
<title>Tutorial: HelloWorld</title>
4
</head>
5
<body jwcid="@Body">
6
<h1>HelloWorld Tutorial</h1>
7
8
<form jwcid="@Form" listener="ognl:listeners.formSubmit">
9
EnterYourName
10
<br/>
11
<input jwcid="enterYourName" name="textfield" type="text"/>
12
<br/>
13
<input type="submit" value="Submit"/>
14
<br/>
15
</form>
16
17
<span jwcid="@Insert" value="ognl:yourName"/>
18
19
</body>
20
</html>
21
Home.page
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE page-specification
3
PUBLIC "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
4
"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
5
<!-- generated by Spindle, http://spindle.sourceforge.net -->
6
7
<page-specification class="com.Home">
8
9
<description>Hello World Home Page</description>
10
11
12
<property-specification name="yourName" type="java.lang.String" persistent="yes"/>
13
<component id="enterYourName" type="TextField">
14
<static-binding name="displayName">displayName</static-binding>
15
<binding name="value" expression="yourName"/>
16
</component>
17
18
</page-specification>
19
20
Home.java
1
package com;
2
3
import org.apache.tapestry.IRequestCycle;
4
import org.apache.tapestry.html.BasePage;
5
6
public abstract class Home extends BasePage
{
7
public abstract String getYourName();
8
9
public static void main(String args[])
{
10
11
}
12
13
public void formSubmit(IRequestCycle cycle)
{
14
// Process the form submission.
15
}
16
}
17