使用三元运算符在EL-jsf中实现else

时间:2016-04-26 14:05:48

标签: jsf if-statement primefaces el ternary-operator

我在jsf 2.0,primefaces和Eclipse Kepler IDE中开发了一个应用程序。我需要在dataTable中显示长值的字符串值。从1到6可能有6个可能的值。我已经按this个问题来解决我的问题,但我不能。我的代码剪断了

  <p:dataTable var="student" value="#{studentBean.studentList}">
  <p:column headerText="Class">
    <h:outputText value="#{student.studentClass == 1? 'One' :
                           student.studentClass == 2? 'Second' :
                           student.studentClass == 3? 'Third' :
                           student.studentClass == 4? 'Fourth' :
                           student.studentClass == 5? 'Fifth':
                           student.studentClass == 6? 'Sixth':''}" />
  </p:column>
      ....

我也尝试过: -

   student.studentClass.equals(1l) and  student.studentClass.equals(1L)

但没有运气。我做错了什么

2 个答案:

答案 0 :(得分:1)

这种方法也不会起作用吗?

<h:outputText rendered="#{student.studentClass == 1}" value="One" />
<h:outputText rendered="#{student.studentClass == 2}" value="Two" />
 ...
<h:outputText rendered="#{student.studentClass == 6}" value="Six" />

答案 1 :(得分:1)

我更希望在模型中添加一个简单的更改,比如说:

Class Pojo / Entity

public class Student{

   ...

   // Add transient annotation only if is an entity class
   @Transient
   private String valueToShow;

   public String getValueToShow(){
     if("1".equals(this.studentClass){
       return "One";
     } else if("2".equals(this.studentClass){
       return "Two";
     }
       ...
  }

}

然后,将此更改添加到xhtml文件(JSF页面):

<p:dataTable var="student" value="#{studentBean.studentList}">
  <p:column headerText="Class">
    <h:outputText value="#{student.valueToShow}" />
  </p:column>
  ....