从未使用过的票务问题字段值

时间:2019-07-04 05:51:22

标签: java eclipse maven wicket

对于Wicket来说是新手,但是具有非常基本的Java。我不了解如何在AjaxButton函数中使用过“结果”,而不用它

该快速修复程序说提供了一个吸气剂和塞特气,我做了(现在已经删除了),但是当我单击“确定”按钮时仍然没有任何反应

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开发》一书)将输入翻倍,但是当我单击OK时,什么也没发生。

在代码中我也遇到了@Override的编译错误,一旦将其删除,我就可以编译并加载网页。他们有关系吗?

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

移除

信息:重点放在

信息:焦点从

移开了

信息:重点放在wicketDebugLink上

信息:焦点已从wicketDebugLink中移除

INFO:重点放在ok2上

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

INFO:

INFO:响应已成功处理。

信息:不需要/不允许重新聚焦上一个焦点组件

ETA,我从私有更改为公开,该错误消失了,但是单击“确定”仍然不起作用,并且出现了新错误: new AjaxButton(){}类型的onSubmit(AjaxRequestTarget,Form)方法永远不会在本地使用

2 个答案:

答案 0 :(得分:2)

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

1)如果javac(或您的IDE)说@Override没有覆盖任何内容,则很可能您在某个地方有错字,并且需要对其进行修复,即从super正确覆盖该方法

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

中对其进行更新

3)检查浏览器的开发工具控制台是否存在JavaScript错误。我希望Wicket抱怨因为缺少rXY

而找不到ID为XY(其中r.setOutputMarkupId(true)是数字)的HTML元素。

答案 1 :(得分:0)

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

新代码

AjaxButton ok = new AjaxButton("ok") {

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            result= 2*num;
            target.add(r);
        }