1

我有一个简单的问题,但我无法解决。我正在使用检票口。在 Web 应用程序上,我有一个按钮(加载)。当我单击该按钮时,一些数据会从 Web 加载,保存在数据库中,然后加载到 Web 应用程序 (StartPage.html)。我有另一个用于更正该数据(编辑)的按钮,当我单击它时,会加载 EditPage.html。所以我只有2页。在对 EditPage.html 进行一些更正后,我单击保存按钮并在数据库中更新新数据,然后应将其加载到 Web 应用程序(StartPage.html)中。

这很简单,但在我点击“加载”按钮之前,应该是干净的。因此,如果我在“加载”-单击之前清理表,则每次单击“编辑”-按钮时都会清理它。我尝试制作一些标志,或向 StartPage 发送参数,但它看起来像一个圆圈。

StartPage 应该每次加载数据,但第一次清理表,然后不是。问题是以某种方式发送参数..

我希望它很清楚,有什么建议吗?

更新:

编辑页面

public class EditPage extends WebPage {
    public EditPage(final PageParameters parameters) {
        Form<?> form = new Form<Void>("form") {
                    @Override
                    protected void onSubmit() {
                        // if button "save" clicked
                        PageParameters params = new PageParameters();
                        params.add("flag", "true");
                        setResponsePage(StartPage.class, params);
                    }
        };
    }
}

首页

public class StartPage extends WebPage {
    public StartPage(final PageParameters parameters) {     
            String flag = parameters.getString("flag")
            if (flag=="false")
                // Delete from DB

            Form<?> form = new Form<Void>("form") {
                @Override
                protected void onSubmit() {
                    // Load from web to DB      
                }
            };

            // Load from DB
    }
}
4

2 回答 2

1

我终于做到了,但正如我所见,这是“糟糕”的解决方案

编辑页面

public class EditPage extends WebPage {
    public EditPage(final PageParameters parameters) {
        Form<?> form = new Form<Void>("form") {
                    @Override
                    protected void onSubmit() {
                        // if button "save" clicked
                        PageParameters params = new PageParameters();
                        params.add("flag", "true");
                        setResponsePage(StartPage.class, params);
                    }
        };
    }
}

首页

public class StartPage extends WebPage {
    public StartPage(final PageParameters parameters) {     

            Form<?> form = new Form<Void>("form") {
                @Override
                protected void onSubmit() {
                    // Delete from DB
                    // Load from web to DB
                    // Load from DB     
                }
            };

            if (parameters.getString("flag")!=null)
                // Load from DB
    }
}
于 2012-10-10T11:41:39.693 回答
1

您还可以执行以下操作:

class StartPage {
    boolean flag;

    StartPage(boolean flag) {
        this.flag = flag;
    }
}

// in EditPage
void onSubmit() {
    setResponsePage(new StartPage(true));
}

(您已经拥有的代码被省略了。)

不会重定向到可收藏的 URL。(这可能是您想要的。)此 SO answer中概述了它将做什么。

于 2012-10-10T14:45:44.937 回答