如何使用具有必需但“运行时评估”属性的复合组件

时间:2012-03-27 13:39:24

标签: java jsf

好吧,也许我的JSF复合组件完全错误(不应该用于我的目的) - 或者我还没有完全理解它们......

我要做的是:创建一个复合组件,它将呈现一些Html标记(使用标准的JSF标记)。并且这些Html标记的属性是根据在组件的接口中定义的参数计算的(如required = true)。这些属性的计算将在组件jar中的简单辅助bean中进行。所以facelet代码如下所示:

<cc:interface>
  <cc:attribute name="userId" required="true"/>
  <cc:attribute name="imageType" required="true"/>
</cc:interface>

<cc:implementation>
    <h:graphicImage value="#{imageBean.getImageUrl(cc.attrs.userId, cc.attrs.imageType)}"
       height="#{imageBean.getImageHeightAsPixels(cc.attrs.imageType)}"
       width="#{imageBean.getImageWidthAsPixels(cc.attrs.imageType)}"/>
</cc:implementation>

除非将它放入ui中的使用页面,否则这个东西可以正常工作:像这样重复:

<ui:repeat value="#{usersBean.users}" var="user">
    <myCC:image userId="${user.id}" imageType="FULL_56"/>
</ui:repeat>

现在,JSF会抱怨我没有传递必需参数的值。因此它现在看起来因为组件接口中定义的属性仅可用作“静态属性”。不能使用仅在调用应用程序阶段之后正确计算的EL表达式的属性。

这种解释是否正确?如果是,是否还有其他方法可以将“动态”数据传递到组件中?或者我实际上完全滥用复合组件?也许应该更简单?

感谢您的任何见解:-) 托本

0 个答案:

没有答案
相关问题