如何根据条件更改 outputLabel 值?
How can i make outputLabel value change according to a condition?
我在 jsf 中有以下 outputLabe 代码:
<ice:outputLabel value="#{litApp.TipusTramitImportAtorgat}" rendered="#{tipusTramitBB.detailEntity.id == 12}"/>
它仅在 tipusTramitBB.detailEntity.id == 12 时出现,否则它必须具有其他值,无论如何要在同一个 outputLabel 中执行此操作,或者我必须添加另一个 outputLabel,如果 tipusTramitBB.detailEntity.id != 12
可以在一个标签中完成:
<ice:outputLabel value="#{tipusTramitBB.detailEntity.id == 12 ? litApp.TipusTramitImportAtorgat : litApp.otherValue}"/>
虽然具有 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";
}
}
}
您必须从 litApp
访问 tipusTramitBB
bean,但这是另一个问题。
这是一种通用方法,但通常更可取,尤其是当您有更复杂的业务逻辑时。 Rendered 属性还有另外一个含义,它是为在渲染时偶尔隐藏元素而设计的。
我在 jsf 中有以下 outputLabe 代码:
<ice:outputLabel value="#{litApp.TipusTramitImportAtorgat}" rendered="#{tipusTramitBB.detailEntity.id == 12}"/>
它仅在 tipusTramitBB.detailEntity.id == 12 时出现,否则它必须具有其他值,无论如何要在同一个 outputLabel 中执行此操作,或者我必须添加另一个 outputLabel,如果 tipusTramitBB.detailEntity.id != 12
可以在一个标签中完成:
<ice:outputLabel value="#{tipusTramitBB.detailEntity.id == 12 ? litApp.TipusTramitImportAtorgat : litApp.otherValue}"/>
虽然具有 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";
}
}
}
您必须从 litApp
访问 tipusTramitBB
bean,但这是另一个问题。
这是一种通用方法,但通常更可取,尤其是当您有更复杂的业务逻辑时。 Rendered 属性还有另外一个含义,它是为在渲染时偶尔隐藏元素而设计的。