JSF 元素的条件顺序

Conditional Order of JSF Elements

我有两个 JSF 元素(例如,一个输入文本和一个图像)。对于某些情况(例如,如果用户已登录),我希望首先呈现输入文本。对于相反的情况(例如,用户是匿名的),我希望先渲染图像。有没有办法做到这一点(可以扩展到不仅仅是 2 个元素)?我唯一的想法如下:

<h:inputText rendered=#{condition}/>
<h:graphicImage/>
<h:inputText rendered=#{!condition}/>

我会用 CSS 来解决这个问题。大致可以归结为:

XHTML:

<div class="container input#{condition ? 'First' : 'Last'}">
    <h:inputText/>
    <h:graphicImage/>
</div>

CSS:

.container { overflow: auto; }
.container.inputFirst input { float: left; }
.container.inputLast input { float: right; }

同样,这很粗糙。这只是给你一个想法。根据您的需要定制它。您可以通过多种方式设置此样式。

如果你想使用 flex,试试:

.container { display: flex; }
.container.inputLast { flex-direction: row-reverse; }