2

2 つの検証メッセージが表示されます。1 つは正しいもので、もう 1 つはフォームの上部にあり、マウスをその上に置くと、「Project Stage[Development]: Unhandled Messages」と表示されます。このメッセージを非表示にするにはどうすればよいですか?

<h:outputLabel for="username">Please enter your username: </h:outputLabel>
<h:inputText id="username" value="#{user.id}" required="true">
    <f:ajax event="blur" render="usernameMessage" />
</h:inputText>
<h:message id="usernameMessage" for="username" />

userBean.java

private static final long serialVersionUID = 1L;

@NotNull(message="The username can not be blank")
@Size(min=6, max=12, message="Please enter a valid username (6-12 characters)")
private String id;

public String getId() {
    return id;
}

web.xml

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>
4

1 に答える 1

3

これは開発者が間違いを犯したことを示す開発警告です。未処理の顔のメッセージはまったくないはずです。適切なものを提供し、<h:message>ajaxリクエストでも更新されていることを確認してください。

<h:message for="Username" />

または、少なくとも<h:messages>すべてのメッセージを表示するジェネリックを提供します。

<h:messages/>

JSFプロジェクトステージをに設定すると、この警告(および未処理のメッセージのリスト全体)は表示されなくなりますProduction

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>

または、コンテキストパラメータ全体を完全に削除します。デフォルトはProductionすでにです。


具体的な問題<h:outputLabel for>とは関係なく、属性が間違っています。入力コンポーネントのIDと一致しません。または、入力コンポーネントのIDは、標準のHTML/CSSコード規則に従っていません。camelCaseではなく、である必要がありTitleCaseます。だから、使用する

<h:outputLabel for="username" ... />
<h:inputText id="username" ... />
<h:message for="username" ... />

それは結局のところ、あなたの具体的な問題の潜在的な主な原因でもあります。正しく使用しました<h:message for="username"/>が、無効なコンポーネントIDを使用している入力コンポーネントが原因でメッセージを表示できませんでしたUsername

于 2012-12-25T02:19:10.367 に答える