gpt4 book ai didi

java - 从未使用过 Wicket 问题字段值

转载 作者:行者123 更新时间:2023-11-30 01:48:39 25 4
gpt4 key购买 nike

对 Wicket 很陌生,但有非常基本的 Java。我不明白为什么没有使用“结果”,因为我在 AjaxButton 函数中使用了它

快速修复说提供一个 getter 和 setter,我做到了(现在已删除),但当我单击“确定”按钮时仍然没有任何反应

CalcPage.java:

public class CalcPage extends WebPage{
private int num;
private int result; // error:The value of the field CalcPage.result is not used
private Label r;

public CalcPage() {
Form<Void> f = new Form<Void>("f");
add(f);
f.add(new TextField<Integer>("num", new PropertyModel<Integer>(this, "num")));
AjaxButton ok = new AjaxButton("ok") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
result = 2 * num;
target.add(r);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {

}
};
f.add(ok);
r = new Label("r", new PropertyModel<Integer>(this, "result"));
add(r);
}
}

CalcPage.html

<html xmlns:wicket="http://wicket.apache.org">
<head>
<meta charset="utf-8" />
<title>Apache Wicket Quickstart</title>
<link href='https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:regular,bold' rel='stylesheet' type='text/css' />
<link rel="stylesheet" href="style.css" type="text/css" media="screen" title="Stylesheet" />
</head>
<body>
<form wicket:id="f">
<input type="text" wicket:id="num"/>
<input type="submit" value="OK" wicket:id="ok"/>
</form>
Result: <span wicket:id="r"></span>
</body>
</html>

希望(根据《使用 Wicket 享受 Web 开发》一书)将输入加倍,但当我单击“确定”时,什么也没有发生。

另外,在代码中,我收到 @Override 的编译错误,一旦删除它,我就可以编译并加载网页。它们有关系吗?

Wicket Ajax 调试窗口信息:信息:焦点已从

中移除

信息:焦点设置在

信息:焦点已从

中移除

信息:焦点集中在 wicketDebugLink

信息:焦点从 wicketDebugLink 中移除

信息:焦点集中在 ok2

信息:收到 ajax 响应(69 个字符)

信息:

信息:响应已成功处理。

信息:不需要/允许重新聚焦最后一个聚焦的组件

预计到达时间我从私有(private)更改为公共(public),该错误消失了,但单击“确定”仍然不起作用,并且出现了新错误:new AjaxButton(){} 类型的 onSubmit(AjaxRequestTarget, Form) 方法从未在本地使用

最佳答案

如果您想通过 Ajax 更新组件,则需要调用 r.setOutputMarkupId(true)

1) 如果 javac (或你的 IDE)说 @Override 没有覆盖任何内容,那么很可能你在某个地方有拼写错误,你需要修复它,即正确覆盖 super 的方法

2) 切勿将#onError() 留空。至少在其中添加一些基本日志记录以通知您存在验证错误。也许根本没有调用#onSubmit()。最好是在页面中有一个 FeedbackPanel,并且您应该在 #onError() - target.add(feedbackPanel)

中更新它

3) 检查浏览器的开发工具控制台是否存在 JavaScript 错误。我预计 Wicket 会提示它找不到 id 为 rXY 的 HTML 元素(其中 XY 是一个数字),因为缺少 r.setOutputMarkupId(true)

关于java - 从未使用过 Wicket 问题字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56881388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com