只更换EL的一部分

时间:2013-04-29 17:34:58

标签: jsf el

我在JSF中有一个模板,这个模板有一个按钮,对于每个使用这个模板的页面,它的动作必须不同。 我想知道是否有任何办法只设置该行动的一部分。 例如 在模板中,我在按钮上有以下属性:

disabled = "#{managedBeanTemplate.EditMode}"

但是,对于将使用此模板的每个页面,它应该仅替换它表示managedBeanTemplate的部分,因此:

disabled = "#{managedBeanProduct.EditMode}"
disabled = "#{managedBeanSales.EditMode}"

有没有办法做到这一点?

我知道有替换部分xhtml的ui:param,但我无法使用以下内容嵌套在模板中:

disabled = "#{#{managedBeanName}.EditMode}"

在模板中,然后

<ui:param name="managedBeanName" value="managedBeanProduct"/>

在使用模板的页面中。

2 个答案:

答案 0 :(得分:0)

我在这里找到答案: facelets: passing bean name with ui:param to action attribute 我可以在模板中做这样的事情:

disabled = "#{managedBeanName['EditMode']}"

然后,我可以通过ui:param

简单地设置“managedBeanName”

答案 1 :(得分:0)

使用带参数的方法会更好。通过让模板构造对服务器端的后向引用,您将创建一个不应该的维护位置。用一个方法替换引用,该方法抽象出组件是否被禁用/渲染/等等的逻辑。

最终用户体验不应该关心&#34;为什么&#34;,只是它是否必须以某种方式呈现组件。