跳转到内容

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 在上下文中设置子元素位于表单中,以及表单是否已提交,然后允许其子元素从请求中获取其值。

华夏公益教科书