如何根据条件使outputLabel值更改?

时间:2016-01-26 17:44:56

标签: jsf icefaces-1.8

我在jsf中有以下outputLabe代码:

<ice:outputLabel value="#{litApp.TipusTramitImportAtorgat}" rendered="#{tipusTramitBB.detailEntity.id == 12}"/>

只有当tipusTramitBB.detailEntity.id == 12时才出现,如果不是它必须有另一个值,无论如何都要在同一个outputLabel中执行它,或者我必须添加另一个如果tipusTramitBB.detailEntity出现的outputLabel。 id!= 12

2 个答案:

答案 0 :(得分:0)

可以在一个标签中完成:

<ice:outputLabel value="#{tipusTramitBB.detailEntity.id == 12 ? litApp.TipusTramitImportAtorgat : litApp.otherValue}"/>

答案 1 :(得分:0)

虽然具有rendered属性的2个标签可以具有相同的语义,但最好是由于某些原因使唯一的元素具有相同的行为:更清晰的代码,从而更好的维护,ajax重新渲染等等。

一种解决方案是(如@Geinmachi所提到的)使用三元运算符:

<ice:outputLabel value="#{tipusTramitBB.detailEntity.id == 12 ? litApp.TipusTramitImportAtorgat : litApp.otherValue}"/>

另一个解决方案(我更喜欢这个)是将您的业务逻辑直接放在托管bean(在您的案例中为litApp),例如:

public class LitApp {

    public Object getTipusTramitImportAtorgat() {
        if (tipusTramitBB.getDetailEntity.getId() == 12) {
            return "Value1";
        } else {
            return "Value2";
        }
    }
}

您必须从tipusTramitBB访问litApp bean,但这是另一个问题。

这是一种通用方法,但通常更可取,特别是如果您有更复杂的业务逻辑。渲染属性具有另一种含义,它设计用于在渲染时偶尔隐藏元素。