1

这是我第一次使用检票口,所以请多多包涵。

wicket 中的大多数示例展示了如何使用 wicket id 自动将内部 HTML 替换为不同的内容。利用这些知识,我用 HTML 手写了一个表单,其中包含许多格式和 JQuery 用于不同的事物,并且只使用 Wicket 自动生成 2 个选择框的信息。但是,当我尝试在 Wicket 端解析提交的信息时,我感到困惑。

我发现这很容易的唯一方法是使用RequestCycle.get().getRequest().getRequestParameters().获取所有传递的信息。它有效,但我认为这不是使用 Wicket 的理想方式。请求处理程序似乎也有一种方法,但我不知道从哪里开始,特别是因为很多文档在新的 6.0.0 版本中已经过时了。

我应该以什么方式将 Wicket 与表单一起使用?我是否手写了大部分表格,只让 Wicket 自动生成一些信息,并使用 RequestCycle?我是否编写了一个框架表单,让 Wicket 自动生成其余部分,并使用大量提交处理程序?这在易于理解的初学者教程中记录在哪里?

注意:我的表单有几个动态创建的字段(想想“单击此处添加更多选项”),并在后台使用 AJAX 提交,验证,然后清除。这可能会使 Wicket 方面的事情复杂化,但这是一个功能要求

4

1 回答 1

4

使用 Wicket,您可以将 HTML 标记视为模板。标记实际上是几乎标准的 HTML。您可以(并且应该)wicket:id为将附加特定行为或逻辑(表单、按钮、链接)或需要一些服务器端处理(例如表单组件或嵌套自定义组件或面板)的所有内容定义属性。其他所有内容都将在响应中输出,就像在标记中一样。

Wicket 将处理表单提交并为您处理请求。在 Wicket 中,表单组件通常在服务器端定义,并添加到Form组件中。在Form组件的onSubmit()中,Wicket 已经处理了请求,提交的值将在FormComponent的模型中可用。

因此,Wicket 处理表单提交的理想方式是在服务器端创建表单中的任何组件。

以下 Wicket 示例页面显示了Form其中的一些基本FormComponents内容:Wicket 示例 - forminput。你甚至可以看到它的源代码

此外,您可能会发现以下 Wicket wiki 页面很有用:How to do things in Wicket - Forms

关于动态组件的创建,每当必须创建一个新的动态组件时,您可以例如发出一个创建组件服务器端的 Ajax 请求(ListView例如,包装在 中),并在 ajax 回调中刷新标记。

这里有一个这样的列表示例:Wicket in action - Building a ListEditor form component

补充一点,我发现Wicket in Action这本书是学习 Wicket 的绝佳资源。第 6 章 - 使用表单处理用户输入详细阐述了该主题。

于 2012-09-10T15:25:30.327 回答