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

gek*_*ish 4 jsf

我已经考虑了一段时间 - 没有得到一个好主意.

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

我不想做一个h:inputText和disable/make只读,它基于布尔值,我想显示一个干净的标签或输出文本.

建议?

Bal*_*usC 6

利用该rendered属性.它需要一个布尔表达式.

<h:inputText value="#{bean.input}" rendered="#{bean.editmode}" />
<h:outputText value="#{bean.input}" rendered="#{!bean.editmode}" />
Run Code Online (Sandbox Code Playgroud)

如果表达式求值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'}" />
Run Code Online (Sandbox Code Playgroud)