0

ボタン(フォームにある)のonSubmitにいくつかのロジックがありますが、失敗する可能性があるため、を使用してメッセージを表示したいと思いますerror(myMessage)。しかし、それは機能せず、正常なようです:

フィードバック パネルが追加されましたが、すべてのメッセージが表示されません

onSubmit で報告されたエラーでフィードバック パネルをレンダリングする可能性はありますか?

ページで使用される ajax はありません。私はウィケット1.5.6を使用しています

編集:

MyPage.java

public class MyPage extends WebPage {

    private static final Logger logger = Logger.getLogger(MyPage.class);
    private static final long serialVersionUID = -8874964120018036584L;

    public MyPage(PageParameters parameters) {
        super(parameters);
        logger.debug("Creating new login page");

        add(new MyLoginForm("loginForm"));
    }
}

MyLoginForm.java

public class MyLoginForm extends StatelessForm<Void> {

    private static final Logger logger = Logger.getLogger(MyLoginForm.class);
    private static final long serialVersionUID = -8694389090804630170L;
    private MyUser user = new MyUser();

    public MyLoginForm(String id) {
        super(id);
        setOutputMarkupId(true);
        logger.debug("Creating new stateless login form");

        add(new RequiredTextField<String>("login", new PropertyModel<String>(user, "login")));
        add(new PasswordTextField("password", new PropertyModel<String>(user, "password")));
        add(new Button("submit"));
        add(new FeedbackPanel("feedback"));
    }

    @Override
    public void onSubmit() {
        info("test info");
    }
}

MyPage.html

<body>
    <form wicket:id="loginForm">
        <fieldset>
            <legend><wicket:message key="form.login.legend"/></legend>
            <input type="text" wicket:id="login" />
            <input type="password" wicket:id="password" />
            <input type="submit" wicket:id="submit" />
            <span wicket:id="feedback"></span>
        </fieldset>
    </form>
</body>

カタリナアウト

16 May 2012 15:24:20:860 WARN  [http-8080-2] [WebSession:135] Component-targetted feedback message was left unrendered. This could be because you are missing a FeedbackPanel on the page.  Message: [FeedbackMessage message = "test info", reporter = loginForm, level = INFO]

MyLoginForm の onSubmit メソッドではなく、Button の onSubmit メソッドを上書きしようとすると、同じことが起こります...

4

3 に答える 3

2

ページに FeedbackPanel を追加する必要があります。フィードバック メッセージは、コンポーネント階層で「バブル」します。最も簡単な方法は、ページに 1 つのフィードバック パネルを配置することです。

ただし、エラーを報告する FormComponent の近くにエラーを表示することもできます。インスピレーションや実装の可能性については、この pdf を参照してください。

編集: wicket クイックスタートを使用して、非常に単純なテストを作成するだけです。以下のようにホームページを変更し、それが機能しました(すべてのエラー/情報メッセージを見ました)

html:

<form wicket:id="form">
            <div wicket:id="feedback"></div>
            <input wicket:id="submit" type="button" value="submit">

</form>

ジャワ:

Form<Void> form = new Form<Void>("form") {
        @Override
        protected void onSubmit() {
            super.onSubmit();
            error("test error from form");
            error("test info from form");
        }
    };
    add(form);
    form.add(new FeedbackPanel("feedback"));
    form.add(new SubmitLink("submit") {
        @Override
        public void onSubmit() {
            super.onSubmit();
            error("an error occurred in button submit");
            info("test info from the button");
        }
    });

編集 2: StatelessForm が使用されていることがわかりました (その詳細を見落としていました)。(通常の) フォームに戻すと、メッセージは正しく表示されるはずです。

于 2012-05-16T18:08:50.393 に答える
0

私は2回チェックしましたが、Wicket 1.5.6 FeedbackPanel(および問題がある場合はSignInForm)は1.5.4よりも動作が悪くなります。この動作の背景が何であるかはわかりません。

編集:バージョン1.5.5はうまく機能します。

EDIT2:https ://issues.apache.org/jira/browse/WICKET-4536

于 2012-05-23T11:15:18.713 に答える
0

この問題に遭遇した他の人のために別の方法を見つけました..

継承元の基本クラスがあり、フィードバック メッセージを基本クラスの一部として出力します。私もこの問題に遭遇し、基本クラス内のメソッドがそれ自体のインスタンスを返すようにしました (これを返す)、そしてこのメ​​ソッドを介して info メソッドにアクセスするだけです... getMethod().info("some message").. そしてそれは私にとってはうまくいきました。私のfeedbackPanelも基本クラスに設定されています..

だから私はあなたが同じことをすることができると思います.. フィードバックメッセージをスタンプしたいページのインスタンスにアクセスするだけです.

于 2013-11-12T18:52:04.347 に答える