当前位置: 首页 > 知识库问答 >
问题:

从未使用过Wicket issue字段值

滕星纬
2023-03-14

对维克特来说非常新,但有非常基本的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)方法在本地从未使用过

共有2个答案

司空赞
2023-03-14

wicket的版本8没有“form”参数,因此可以将其删除:

新代码

AjaxButton ok = new AjaxButton("ok") {

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            result= 2*num;
            target.add(r);
        }
桂宏旷
2023-03-14

如果要通过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和路由填充下一个字段),但我想要以下内容