1

ページの上部にない JSF2 フォームがあり、フォームの見出しに名前付きアンカーがあります。

<h2><a name="contact_form">Contact Us</a></h2>

フォームは、次のようなユーザー側の検証で構成されます。

<f:validateLength for="message" minimum="10"/>
<f:validateRegex for="email" pattern="#{regex['email']}" />

検証が失敗すると、ユーザーはページの上部にリダイレクトされますが、エラー メッセージがフォームに表示されます。フォームが検証に合格すると、ManagedBean でリクエストが処理され、成功メッセージがフォームに表示されます。次の文字列を返します。

public String sendMessage () {
    // process request ...

    return "#contact_form";
}

このコードにより、次の警告が表示されます。

WARNING: JSF1090: Navigation case not resolved for component j_idt83.
  1. 検証が失敗し、名前付きアンカーにリダイレクトされることを望みます。
  2. フォームを正常に処理して、名前付きアンカーにリダイレクトすることをお勧めします。

脚注:このフォームは、サイトのすべてのページのステートメントによって挿入されui:includeます。フォームがある URL を必ずしも知っているわけではありません。

4

1 に答える 1

0

少なくともカスタム NavigationHandler クラスを作成しない限り、ナビゲーションの結果としてフラグメントを返すことはできないと思います。(このSOの回答、特に受け入れられた回答に関するコメントを参照してください)

私たちのアプリケーションでは、マスター ページ テンプレートで少し jquery を使用してこれを回避しました。この jquery は、document.ready() 関数で、「scroll_to_anchor」で終わる ID を持つ要素を選択し、見つかった場合はウィンドウの位置を最初に設定します。その ID を持つ要素。今はコードベースにアクセスできませんが、非常に簡単だったことを覚えています。私のソリューションに興味がある場合は、明日オフィスにいるときにコードを投稿できます。

于 2013-03-10T14:14:46.170 に答える