小编wir*_*bot的帖子

复合组件必需属性在 Mojarra 2.0.3 中引发异常

我一直在玩 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
}
Run Code Online (Sandbox Code Playgroud)

和复合组件:

<composite:interface>
    <composite:attribute name="value" required="true" />
</composite:interface>

<composite:implementation>
    <h:outputText value="Value: '#{cc.attrs.value}'" />    
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)

这些标签适用于 Mojarra 2.0.2:

<foo:bar value="" />
<foo:bar value="#{simpleMB.whatever}" />
Run Code Online (Sandbox Code Playgroud)

但是,当我升级到 2.0.3 时,只有第一个标签有效。第二个标记导致此错误消息:

/requiredAttribute.xhtml @20,42 <foo:bar> The following attribute(s) are 
required, but no …
Run Code Online (Sandbox Code Playgroud)

composite-component jsf-2

5
推荐指数
1
解决办法
2496
查看次数

标签 统计

composite-component ×1

jsf-2 ×1