如何根据jsf中的布尔变量显示两种不同类型的组件?

时间:2010-06-28 17:10:41

标签: jsf

我已经考虑了一段时间 - 没有好主意。

这就是问题所在。我将不得不在文本框中或作为输出文本显示文本。如何在JSF中使用布尔变量来执行此操作?

我不想创建一个h:inputText并禁用/ make read,它基于boolean,我想显示一个干净的标签或输出文本。

建议?

1 个答案:

答案 0 :(得分:6)

使用rendered属性。它需要一个布尔表达式。

<h:inputText value="#{bean.input}" rendered="#{bean.editmode}" />
<h:outputText value="#{bean.input}" rendered="#{!bean.editmode}" />

如果表达式求值true,则组件将在组件树中呈现,并在生成的HTML输出中可见。如果它评估false,它将不会被渲染,因此不会被发送到HTML输出。

以下是其他一些如何表达布尔表达式的例子。

<h:someComponent rendered="#{bean.booleanValue}" />
<h:someComponent rendered="#{bean.intValue > 10}" />
<h:someComponent rendered="#{bean.objectValue == null}" />
<h:someComponent rendered="#{bean.stringValue != 'someValue'}" />
<h:someComponent rendered="#{!empty bean.collectionValue}" />
<h:someComponent rendered="#{!bean.booleanValue && bean.intValue != 0}" />
<h:someComponent rendered="#{bean.stringValue == 'oneValue' || bean.stringValue == 'anotherValue'}" />