跳轉到內容

WebObjects/Web 應用程式/開發/表單的工作原理

來自 Wikibooks,開放世界的開放書籍

本文件由 Andrew Lindesay (http://www.lindesay.co.nz) 撰寫,並與 WebObjects 5.3 相關。

元件操作透過利用操作 URL 的後半部分來工作,該 URL 看起來像2.12.6.2以允許“擁有”該操作的元素呼叫其繫結的操作方法。我們將傳入的數字字串稱為“傳送者 ID”,並將元素的識別符號稱為“元素 ID”。如果兩者匹配,則元素知道它應該呼叫其操作。

如果您有一個帶有許多提交按鈕的表單,則這不可能是正確操作被呼叫的方式,因為操作方法包含一個 URL,其中包含表單的“傳送者 ID”。這將與提交按鈕的“元素 ID”不匹配。例如,以下虛構程式碼說明了這一點。

<form method="post" action="/cgi-bin/WebObjects/Foo.woa/1/wo/qtU2rRz2QrxNsJpxLRVqS0/0.32.0">
<input size="40" type="text" name="32.0.1">
<input type="submit" value="Search" name="32.0.2">
</form>

此處的提交按鈕可能具有元素 ID32.0.2,但表單具有元素0.32.0。因此,無法將傳送者 ID 與元素 ID 匹配。所以問題是;這種機制是如何工作的?

呼叫動作

[編輯 | 編輯原始碼]

提交按鈕可以查詢32.0.2的值在傳入的請求中。透過這種方式,它將能夠看到值搜尋然後呼叫繫結的操作。但是,這種機制稍微複雜一些。表單元素修改上下文以使提交按鈕表現出這種行為。這些修改包括設定setInForm(...)方法以及一些內部方法來宣告表單是否已提交以及提交按鈕是否已呼叫其操作方法。

如果提交按鈕確實呼叫了其方法,那麼它反過來修改上下文以宣告某個操作已被“觸發”。如果沒有任何提交按鈕在上下文中設定此值,則表單可以根據需要呼叫其自己的操作方法。

附加到響應

[編輯 | 編輯原始碼]

WOForm 只是在上下文中設定它位於表單中,然後呈現其子元素。

從請求中獲取值

[編輯 | 編輯原始碼]

WOForm 在上下文中設定子元素位於表單中,以及表單是否已提交,然後允許其子元素從請求中獲取其值。

華夏公益教科書