我有一个带有字段status
的bean。根据{{1}}值,应该应用不同的css类来渲染它。
所以,我需要这样的东西(离真实伪代码很远):
status
我尝试应用if status == "Approved"
cssClass = "green"
if status == "Rejected"
cssClass = "red"
<span class="cssClass">Some info</span>
但是我无法使用facelets和jsf(但我听说这是可能的,也许是真相)。这是代码:
jstl
如何使用JSF / Facelets完成?
答案 0 :(得分:8)
为双方(模型和视图)提供好处,而不是使用enum
而不是四个独立的布尔值,这可能只会导致维护问题。
public enum Status {
APPROVED, REJECTED, PROGRESS, PENDING;
}
在Java方面处理它不仅更容易,更清晰,而且您也可以在EL中打印它。
<span class="#{bean.status}" />
答案 1 :(得分:4)
JSF方法通常使用h-tag上的rendered
属性。另请注意,EL(表达式语言)在JSF中非常具有表现力,因此您可以在类表达式中使用?:
。 E.g。
<span class="status #{report.approved ? 'approved' : report.rejected ? 'rejected' : report.inProgress ? 'progress' : report.pendingHR ? 'pending' : ''}">
答案 2 :(得分:1)
只需将cssStatus
作为支持bean中的属性解析为正确的CSS类。
public String getCssStatus() {
if( this.status == .... )
return "green";
else
...
}
然后
<span class="status #{report.cssStatus}">#{report.formattedStatus}</span>
AFAIK,这应该有用。