如何在xhtml jsf页面中从数据类渲染枚举值

时间:2012-08-06 11:54:51

标签: java jsf facelets

我的数据类中有一个枚举如下

public enum ProcStat     {

    NOT_READY               ((byte)-1, "Not Ready For Processing"),
    READY_FOR_PROCESSING    ((byte)0,  "Ready For Processing"),
    BEING_PROCESSED         ((byte)1,  "Being Processed"),
    PROCESSED_SUCCESSFULLY  ((byte)2,  "Processed Successfully"),
    MSG_SUPPRESSED          ((byte)98, "Msg suppressed before processing"),
    PROCESSED_ERROR         ((byte)99, "Processed With Error");

    private final Byte statByte; 
    private final String  statusDesc;
    ProcStat(Byte statByte, String statusDesc)
    {
        this.statByte = statByte;
        this.statusDesc = statusDesc;
    }
    @Override
    public String toString()
    {
        return statusDesc;
    }
    protected static ProcStat getProcStat(Byte procStat)
    {
        if (READY_FOR_PROCESSING.statByte.equals(procStat))             
        {
            return READY_FOR_PROCESSING;
        }           
        else if (BEING_PROCESSED.statByte.equals(procStat))             
        {
            return BEING_PROCESSED;
        }
        else if (PROCESSED_SUCCESSFULLY.statByte.equals(procStat))
        {   
            return PROCESSED_SUCCESSFULLY;
        }
        else if (MSG_SUPPRESSED.statByte.equals(procStat))
        {   
            return MSG_SUPPRESSED;
        }           
        else if (PROCESSED_ERROR.statByte.equals(procStat))
        {
            return PROCESSED_ERROR;                 
        }
        else
        {
            return NOT_READY;
        }
    }
    public Byte getStatByte()
    {
        return this.statByte;
    }
};

Proc_Stat引用DataBase表中的Number字段,我需要在页面上显示一列,它显示每行的数字proc_stat的相应String。 这就是我在xhtml页面上呈现相同数据类的任何其他字段的方式:

id =“dataTable”name =“dataTable”var =“data”

    

如何为枚举类型提供输出值? 我这样给出:value =“#{data.procstat.toString()}”??

1 个答案:

答案 0 :(得分:0)

我认为你需要在你的一个托管bean中创建与getProcStat方法相同的方法。类似的东西:

public String getProcStat(Byte byte) {
    return ProcState.getProcState(byte).toString();
}

在xhtml中:

value="#{yourBean.getProcState(data)}"