在使用 Wicket(版本 7.5.0)生成简单的表单页面时,我得到了似乎不必要的额外标记(使用内联 CSS 将隐藏字段放入 <div>
中):
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<head>
<meta charset="utf-8" />
<title>Apache Wicket Quickstart</title>
<link href='http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:regular,bold' rel='stylesheet' type='text/css' />
<link rel="stylesheet" href="mystyle.css" type="text/css" media="screen" title="Stylesheet"/>
</head>
<body>
<form method="post" wicket:id="ItemForm" id="ItemForm1" action="./tf?1-1.IFormSubmitListener-ItemForm">
<div style="width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden">
<input type="hidden" name="ItemForm1_hf_0" id="ItemForm1_hf_0" />
</div>
<p>
<label for="name">
<span>Item name:</span>
</label>
<input type="text" name="p::name" wicket:id="name" value="">
</p>
<p>
<label for="price">
<span>Item price:</span>
</label>
<input type="text" name="price" wicket:id="price" value="0">
</p>
<section>
<input type="submit" value="Submit">
</section>
</form>
</body>
</html>
相关的Java类是:
// Package name and imports omitted
public final class ItemFormPage extends WebPage {
@EJB(name = "ejb/item")
Item it;
public ItemFormPage() {
Form f = new Form("ItemForm") {
@Override
public void onSubmit() {
setResponsePage(new ItemDisplay());
}
};
f.setDefaultModel(new CompoundPropertyModel(it));
f.add(new TextField("name"));
f.add(new TextField("price"));
add(f);
}
}
我是 Wicket 新手,从代码中可以明显看出。有没有办法避免生成上述看似不必要的标记?换句话说,我是否遗漏了什么或者我应该报告错误?
最佳答案
此隐藏的输入
用于使用SubmitLink
等基于 anchor 的组件提交表单。
例如,您有一个表单
,并且希望有两种方式提交它(使用不同的 2 个按钮):
Form<Void> form = new Form<Void>("form") {
@Override
protected void onSubmit() {
// central form onSubmit
}
};
SubmitLink submitter1 = new SubmitLink("submitter1") {
@Override
public void onSubmit() {
System.out.println("submitter 1 called");
}
};
form.add(submitter1);
SubmitLink submitter2 = new SubmitLink("submitter2") {
@Override
public void onSubmit() {
System.out.println("submitter 2 called");
}
};
form.add(submitter2);
当您单击两个提交者中的任何一个时,其名称将被放入该输入中,Wicket 将找到正确的 SubmitLink
组件并调用其 onSubmit()
。
关于java - Wicket 表单中的(不必要的)标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872419/