1

I have given the id of the input text with date_m. When I try to access the page it gives an error saying component id date_m not found in view. But I do not get this error when the id is changed to date-m. Does JSF not allow underscore for id's? IN our project the javax.faces.SEPARATOR_CHAR is underscore.

<h:inputText id="date_m" value="{bean.month}"/>
<h:message id="error" for="date_m"/>
4

2 に答える 2

2

コンポーネント ID には、区切り文字と同じ文字を含めないでください。これが、デフォルトの区切り文字が:. コンポーネント ID では使用できません。 の規則に従って無効になりますがUIComponent#setId()、HTML 要素 ID では使用できます。

ただし、javax.faces.SEPARATOR_CHARコンテキスト パラメータによってデフォルトの区切り文字をコンポーネント ID で許可されている文字に変更する場合は、コンポーネント ID を指定するときに注意が必要です。つまり、コンポーネント ID で区切り文字を正確に使用しないようにする必要があります。そうしないと、UIViewRoot#findComponent()メソッドが壊れる可能性があります。このメソッドは、クライアント ID でコンポーネントを検索するために JSF によって内部的に使用されます。

したがって、区切り文字がの場合、コンポーネント ID のどこ_にも使用しないでください。論理的な結果は、結果として代わりに使用することです。-

以下も参照してください。

于 2012-04-13T03:15:39.237 に答える
1

区切り文字が「_」の場合、id フィールドでアンダースコアを使用してルックアップ アルゴリズムを混乱させたと思います。

アンダースコア (「date_m」から「datem」まで) を削除してみて、何が起こるかを確認してください。

于 2012-04-13T01:02:34.840 に答える