2

こんにちは、JSFの専門家です...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:p="http://primefaces.org/ui"
  xmlns:o="http://omnifaces.org/ui">
<h:head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
</h:head>
<h:body>
<h:form>
    <o:validateOneOrMore components="one two three" id="validate"/>
    <p:message for="validate"/>
    <p:inputText id="one" value="#{testBean.valueOne}">
        <p:ajax event="change" process="@this" update="@form"/>
    </p:inputText>
    <p:inputText id="two" value="#{testBean.valueTwo}">
        <p:ajax event="change" process="@this" update="two"/>
    </p:inputText>
    <p:inputText id="three" value="#{testBean.valueThree}">
        <p:ajax event="change" process="@this" update="one two validate"/>
    </p:inputText>
    <p:commandButton process="@form"
                     update="@form"
                     value="Submit"
                     partialSubmit="true"
                     action="#{testBean.submit}"/>
    </h:form>
</h:body>
</html>

少なくとも 1 つのフォームに入力する必要があり、すぐにエラーをリセットし、タブを使用できるシンプルなフォーム。

サンプルコードでわかるように、さまざまなことを試しました。

何が起こるのですか

  • 送信を押します->エラーメッセージが表示されます:問題ありません
  • フィールド 1 にエントリを入力し、tab: で終了します (すべてのフィールドがエラー状態ではなくなり、メッセージが表示されなくなります)。ただし、AJAX の更新が完了した後、フォーカスが失われます。ここで読んだように、JSFとブラウザの予想される動作はわかりましたが、どうすれば解決できますか?
  • すべてのエントリを削除し、Enter キーを押します -> フィールド 3 に入力し、フィールドを離れます ... 何も変わりません ... メッセージも消えません。すべてのフィールドを更新したので、私もわかりません

そのようなフォームを持つための解決策はありますか...フォームの入力検証が行われるたびに(そのようなグローバルエラーを削除することを意味します)、タブキーを使用してすばやく使用できますか?

どうも。

4

1 に答える 1