私は JSF 2.0 複合コンポーネントをいじっていますが、composite:attribute
タグの require 属性が何を意味するのかについて少し混乱しています。ドキュメントには、ページ作成者がこの属性の値を提供する必要がある場合、required 属性は true であると記載されています。
私はこれを、required=true
. また、空の文字列が有効な値であると想定しました。これが Mojarra 2.0.2 での動作です。
この単純なマネージド Bean を使用すると、次のようになります。
@ManagedBean(name = "simpleMB")
@ViewScoped
public class SimpleManagedBean implements Serializable {
private static final long serialVersionUID = -1;
private String whatever;
... setter and getter
}
そして複合コンポーネント:
<composite:interface>
<composite:attribute name="value" required="true" />
</composite:interface>
<composite:implementation>
<h:outputText value="Value: '#{cc.attrs.value}'" />
</composite:implementation>
これらのタグは Mojarra 2.0.2 で機能しました:
<foo:bar value="" />
<foo:bar value="#{simpleMB.whatever}" />
しかし、2.0.3 にアップグレードすると、最初のタグしか機能しません。2 番目のタグにより、次のエラー メッセージが表示されます。
/requiredAttribute.xhtml @20,42 <foo:bar> The following attribute(s) are
required, but no values have been supplied for them: value.
required を false に設定すると、正常に動作します。
必須属性の意味を誤解していませんか? 誰かが私が期待すべき動作を明確にすることができますか?
ありがとう。