0

我在 jsf 中有以下 outputLabe 代码:

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

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

4

2 回答 2

0

它可以在一个标签中完成:

<ice:outputLabel value="#{tipusTramitBB.detailEntity.id == 12 ? litApp.TipusTramitImportAtorgat : litApp.otherValue}"/>
于 2016-01-26T19:24:34.167 回答
0

尽管具有属性的 2 个标签rendered可能具有相同的语义,但出于某些原因,最好让唯一的元素具有相同的行为:更清晰的代码,因此更好的维护,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";
        }
    }
}

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

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

于 2016-01-27T05:57:24.780 回答