Я играл с составными компонентами JSF 2.0, но меня немного смущает вопрос о том, для чего предназначен атрибут require в теге composite:attribute
.В документации сказано, что обязательный атрибут равен true, если автор страницы должен предоставить значение для этого атрибута.
Я интерпретировал это как означающее, что значение должно быть предоставлено для всех составных: атрибуты, которые имеют required=true
,Я также предположил, что пустая строка является допустимым значением.И вот как это работает в Мохарре 2.0.2.
Использование этого простого управляемого компонента:
@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>
Эти теги работали в Мохарре 2.0.2:
<foo:bar value="" />
<foo:bar value="#{simpleMB.whatever}" />
Однако, когда я обновился до 2.0.3, работает только первый тег.Второй тег вызывает это сообщение об ошибке:
/requiredAttribute.xhtml @20,42 <foo:bar> The following attribute(s) are
required, but no values have been supplied for them: value.
Работает нормально, когда я установил значение false.
Я неправильно понял, что означает обязательный атрибут?Может кто-нибудь уточнить, какое поведение мне следует ожидать?
Спасибо.