2016-04-26 93 views
0

我有一个应用程序正在开发jsf 2.0,primefaces和使用Eclipse Kepler IDE。我需要在dataTable中显示一个字符串值作为长整型值。可能有6个可能的值从1到6.我跟着this问题来解决我的问题,但我不能。我剪断代码使用三元运算符实现其他如果在EL - jsf

<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) 

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

+1

所以这是一个“长”? '#{student.studentClass}'和'#{student.studentClass ['class']}'是什么打印的? – BalusC

+0

#{student.studentClass}打印1,2等我需要显示第一,第二...... – jaykio77

+0

如果您要调用支持bean,为什么不从那里返回值? – raven

回答

0

这种方法不行吗?

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

优秀。它为我工作。 – jaykio77

1

我宁愿增加模型的简单变化,说:

类POJO的/实体

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> 
    ....