对维克特来说非常新,但有非常基本的Java。我不明白为什么“结果”没有被使用,因为我在AjaxButton函数中使用了它
快速修复程序说要提供一个getter和setter,我确实提供了(现在已经删除了),但是当我单击OK按钮时仍然没有发生任何事情
CalcPage。爪哇:
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开发》一书)将输入加倍,但当我点击OK时,什么也没发生。
同样在代码中,我得到了一个带有@Override的编译错误,一旦这个错误被删除,我就可以编译并加载网页了。他们有关系吗??
Wicket Ajax调试窗口信息:INFO:焦点从
信息:聚焦于
信息:焦点从
信息:集中在wicketDebugLink上
信息:焦点已从wicketDebugLink中移除
信息:集中在ok2上
信息:收到ajax响应(69个字符)
信息:
信息:响应已成功处理。
INFO:不需要/不允许重新聚焦最后聚焦的组件
ETA我从private改为public,错误消失了,但单击ok仍然不起作用,出现了新的错误:new AjaxButton(){}类型的onSubmit(AjaxRequestTarget,Form)方法在本地从未使用过
wicket的版本8没有“form”参数,因此可以将其删除:
新代码
AjaxButton ok = new AjaxButton("ok") {
@Override
protected void onSubmit(AjaxRequestTarget target) {
result= 2*num;
target.add(r);
}
如果要通过Ajax更新组件,需要调用r.setOutputMarkupId(true)
。
1)如果javac(或你的IDE)说@Overide
没有覆盖任何东西,那么很可能你在某个地方有一个打字错误,你需要修复它,也就是说,正确覆盖来自超级的方法
2) 切勿将#onError()
留空。作为最低要求,在其中添加一些基本日志,以通知您存在验证错误。可能根本没有调用#onSubmit()
。最好是在页面中有一个反馈面板,您应该在#onError()
-目标中更新它。添加(反馈面板)
3) 检查浏览器的开发工具控制台是否存在JavaScript错误。我希望Wicket会抱怨它找不到id为rXY
(其中XY
是一个数字)的HTML元素,因为缺少r.setOutputMarkupId(true)
我正在尝试从一个select表单中获取一个时间值。我在代码中看不到任何错误,尝试更改所有类名和变量,但值仍然没有被get select。(提交表单后我看不到所选的值) 代码添加如下:
问题内容: 我有一个由对象填充的ArrayList。 我的对象类称为有两个字段; 我想使用该字段过滤列表,为了进行测试,我使用了字符串“ test”。 我用了来自谷歌的番石榴,它可以过滤ArrayList。 这是我尝试的代码: 但是此代码不起作用。 问题答案: 这是正常的:Predicates.containsPattern()在s上操作,您的对象未实现。 您需要编写自己的谓词: 然后使用: 但是
例如insert时需要忽略某个特定属性, update时只更新某些属性, 查询时需要跳过大字段等。 FieldFilter/FieldMatcher提供细致的过滤选项,包括: 黑名单(locked) 白名单(actived) 忽略空值(ignoreNull) 忽略数值0(ignoreZero) 忽略日期属性(ignoreDate) 忽略空字符串(ignoreBlankStr) 忽略数值型主键(ig
问题内容: 我正在尝试对数组中的值进行聚合,并且还过滤由前缀返回的存储桶。不知道这是否可行,或者我滥用过滤桶。 3份文件: 目的是获取带有字母B开头颜色的文档数量: 不幸的是,返回的结果包括Red。显然是因为带有红色的文档仍然按过滤器匹配,因为它们也具有蓝色和/或黑色。 有没有一种方法可以只过滤存储桶结果? 问题答案: 尝试此操作,它将过滤为存储桶本身创建的值:
问题内容: 我有一个JSF验证程序,用于检查“容器编号”字符串是否符合ISO-6346规范。 它工作正常,但是我需要根据容器编号来自的Bean中的其他值添加一些条件处理。这个Bean可以是几种不同的类型。 有什么方法可以在验证器中访问Bean并对其执行操作?理想情况下,我希望将其保留为验证器,但是,如果没有解决方案,则必须在持久化之前在Bean中实现逻辑。 我在想一些类似的事情: 更新: 在许多方
问题内容: 对此不熟悉,尝试按照著名的Flask教程使用Flask-bootstrap,Flask-wtforms,Jinja等构建一个应用程序 我有一个带有2个选择字段和一个按钮的表单。 我只希望第一个字段预先填充,而另一个字段根据前一个字段的选定值填充(在客户端?)。 在模板中,我尝试类似 可以正常工作(只要我返回元组列表以使用正确的javascript和路由填充下一个字段),但我想要以下内容