1

簡単な問題がありますが、解決できません。改札を使用しています。Webアプリケーションには、ボタン(ロード)があります。そのボタンをクリックすると、一部のデータがWebから読み込まれ、データベースに保存されてから、Webアプリケーション(StartPage.html)に読み込まれます。そのデータを修正(編集)するための別のボタンがあり、それをクリックすると、EditPage.htmlが読み込まれます。だから私は2ページしかありません。EditPage.htmlでいくつかの修正を行った後、[保存]ボタンをクリックし、データベースの新しいデータを更新してから、Webアプリケーション(StartPage.html)にロードする必要があります。

簡単ですが、「ロード」ボタンをクリックする前に、きれいになっているはずです。したがって、「ロード」クリックの前にテーブルをクリーンアップすると、「編集」ボタンをクリックするたびにテーブルがクリーンアップされます。いくつかのフラグを作成したり、StartPageにパラメーターを送信したりしようとしましたが、円のように見えます。

StartPageは毎回データをロードする必要がありますが、最初はテーブルをクリーンアップしますが、その後はクリーンアップしません。問題は、なんとかしてパラメータを送信することです。

私はそれが明確であることを願っています、何か提案はありますか?

更新しました:

EditPage

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);
                    }
        };
    }
}

StartPage

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

私はついにこのようになりましたが、私が見ることができるように、これは「悪い」解決策です

EditPage

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);
                    }
        };
    }
}

StartPage

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の答えに概説されています。

于 2012-10-10T14:45:44.937 に答える