4

Tapestry 5.2 アプリケーションでこの問題に遭遇しました。

フォームでは、リクエスト メソッドが POST であり、t:formdata クエリ パラメータに値が含まれている必要があります。

アクセスログを見ると、たまに別のユーザーからGETメソッドでフォームが送信されていることがわかりました。ただし、ドキュメントによると、Tapestry 5 は post-redirect-get スキームを使用します。このページは匿名アクセスを許可していないため、ロボットではありません。だから私は、そのような問題の原因が何であるかに不満を感じています. 提案してください。

フォームには、Ajax によって更新されたいくつかの選択があります。

編集 2.その ips からのログインが成功したため、そのような GET 要求はボットではなくユーザーから送信されました。

4

3 に答える 3

0

formコンポーネントに次のものが含まれていることに気付きました。

Object onAction(EventContext context) throws IOException {
   ...
   executeStoredActions();
   ...
}

private void executeStoredActions()
{
    String[] values = request.getParameters(FORM_DATA);

    if (!request.getMethod().equals("POST") || values == null)
        throw new RuntimeException(messages.format("invalid-request", FORM_DATA));
    }
    ...
}

これは、それ自体およびネストされたコンポーネントからのすべての「アクション」イベントを処理することを意味します。「アクション」イベント (actionlink など) を発生させ、イベントを処理/中止しないネストされたコンポーネントがあるとは思いませんか? これらのイベントは、フォーム ハンドラーに「バブル アップ」し、エラーの原因になります。

イベントが「バブルアップ」する理由については、こちらを参照してください。

于 2013-10-08T13:30:01.803 に答える