我在渲染页面时仍然遇到RuntimeException,我不明白原因。它告诉我们关闭了</div>
,但它已经存在了。这个例外可能是什么解决方案?
Stracktrace:
意外的RuntimeException :
org.apache.wicket.markup.MarkupException:“<div class="device-nr" wicket:id="sampleHeader">
”的预期关闭标记可能尝试在此组件的主体中嵌入组件“<input wicket:id="saveButton" type="submit" value="Save"/>
”,丢弃其正文
在org.apache.wicket.markup.MarkupStream.throwMarkupException(MarkupStream.java:526)
在org.apache.wicket.Component.replaceComponentTagBody(Component.java:4045)
在org.apache.wicket.markup.html.basic.Label.onComponentTagBody(Label.java:131)
这是我的HTML代码:
<wicket:extend>
<form class = sample-form wicket:id="sample_form">
<div class="device-nr" wicket:id="sampleHeader">
<input wicket:id="saveButton" type="submit" value="Save"/>
</div>
<wicket:child />
<!-- display error here -->
<div class= "feedback" wicket:id="feedback"></div>
<div class="sample_details" wicket:id="sample_details"></div>
</form>
</wicket:extend>
这是我的Java代码:
this.form = new Form<T>("sample_form", compound);
form.add(new Button("saveButton") {
private static final long serialVersionUID = 5878291170139126213L;
@Override
public void onSubmit() {
T s = form.getModelObject();
logger.info(s.toString());
}
});
form.add(new Label("sampleHeader", provideSampleHeader()));
form.add(provideSamplePanel());
form.add(new FeedbackPanel("feedback"));
add(form);
谢谢你的帮助!
答案 0 :(得分:2)
您在div-tag上使用了Label。标签会覆盖其标记内的任何标记,因此删除用于锚定按钮的输入标记。
要摆脱这种情况,你需要另一个标签(很可能是一个检票口:容器,因为它只能呈现它的内容)。
像
这样的东西<wicket:extend>
<form class = sample-form wicket:id="sample_form">
<div class="device-nr"> <wicket:container wicket:id="sampleHeader" />
<input wicket:id="saveButton" type="submit" value="Save"/>
</div>
<wicket:child />
<!-- display error here -->
<div class= "feedback" wicket:id="feedback"></div>
<div class="sample_details" wicket:id="sample_details"></div>
</form>
</wicket:extend>
我现在无法测试,因为我在这里没有安装检票口试试......