Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database java primefaces如何在xhtml上显示数据库中int值的枚举名_Database_Primefaces_Enums_Int - Fatal编程技术网

Database java primefaces如何在xhtml上显示数据库中int值的枚举名

Database java primefaces如何在xhtml上显示数据库中int值的枚举名,database,primefaces,enums,int,Database,Primefaces,Enums,Int,情况就是这样,我真的不知道该怎么办。 我希望使用jpa和enum持久化月份,其中月份将作为相应的int值持久化。我读过很多类似的问题,我知道关于序数、字符串和@Enumerated的观点,但我想使用这个自定义int值,我决定这样做: public enum Months { January(1), February(2), March(3), April(4), May(5), Jun(6), July(7), Au

情况就是这样,我真的不知道该怎么办。
我希望使用jpa和enum持久化月份,其中月份将作为相应的int值持久化。我读过很多类似的问题,我知道关于序数、字符串和@Enumerated的观点,但我想使用这个自定义int值,我决定这样做:

public enum Months {        
    January(1),
    February(2),
    March(3),
    April(4),
    May(5),
    Jun(6),
    July(7),
    August(8),
    September(9),
    October(10),
    November(11),
    December(12);

    private int intValue;

    private Months(int v) {
        this.intValue = v;
    }

    public int getIntValue() {
        return intValue;
    }

    // Mapping month to int
    private static final Map<Integer, Months> mapMonth = new HashMap<Integer, Months>();
    static
    {
        for (Months m : Months.values())
            mapMonth.put(m.intValue, m);
    }

    //Get month from int
    public static Months getMonthName(int v)
    {
        Months m = mapMonth.get(Integer.valueOf(v));
        return m;
    }

}

@Transient
private transient Months month; //actual enum; not stored in db
@Column(name="month")  
private int monthInt; // enum int value gets stored in db
我得到4分。
那么,主要问题如何显示月份名称,即枚举名称?

谢谢您的时间。

好吧,这是开箱即用的。我用你的枚举和素数做了一个简单的例子

豆子:

@ManagedBean
@ViewScoped
public class MonthEnumBean
{

    private Months month;
    private int monthInt;
    private String monthString;

    public MonthEnumBean()
    {
        monthInt = 12;

    }

    public Months[] getMonths()
    {
        return month.values();
    }

    public Months getMonth()
    {
        return month;
    }

    public void setMonth(Months month)
    {
        this.month = month;
    }

    public int getMonthInt()
    {
        return monthInt;
    }

    public void setMonthInt(int monthInt)
    {
        this.monthInt = monthInt;
    }

    public Months getMonthString()
    {
        return month.getMonthName(monthInt);
    }
}
示例页:

<h:form>
    <p:dataTable id="month" var="month" value="#{monthEnumBean.months}">
        <p:column id="modelHeader" exportable="true">
            <f:facet name="header">
                <h:outputText value="Month Name" />
            </f:facet>
            <h:outputText value="#{month}" />
        </p:column>
        <p:column>
            <f:facet name="header">
                <h:outputText value="Int " />
            </f:facet>
            <h:outputText value="#{month.intValue}" />
        </p:column>
    </p:dataTable>

    <p:panel>
    <p:selectOneMenu value="#{monthEnumBean.month}">
        <f:selectItem itemLabel="Select One" itemValue="" />
        <f:selectItems value="#{monthEnumBean.months}" var="month" itemLabel="#{month}" itemValue="#{mont.intValue}" />
    </p:selectOneMenu>
    </p:panel>
    <p:commandButton value="Submit" update="@form" oncomplete="dlg.show()" />
    <p:dialog header="Selected Values" modal="true" widgetVar="dlg">
        <h:panelGrid columns="1" id="display">
            <h:outputText value="Name: #{monthEnumBean.month}" />
            <h:outputText value="Intvalue: #{monthEnumBean.month.intValue}" />
        </h:panelGrid>
    </p:dialog>
    <p:panel>
        <p:panelGrid columns="3">
            <h:outputText value="Number from database: #{monthEnumBean.monthInt }" />                   
            <h:outputText value="String name of number from database: #{monthEnumBean.monthString}" />
        </p:panelGrid>
    </p:panel>
</h:form>


谢谢。到目前为止,p:selectOneMenu仍然存在一个问题:它不能很好地与p:column配合使用。它显示枚举的int值,而不是名称。这是代码,很抱歉把它放在一行,我不知道如何在注释中写:
{m}
如果我使用这段代码,它会按预期工作,我在“选择一”菜单中看不到int值。你想用上面的代码实现什么?没关系,它使用的是基本的selectOneMenu。问题是,为了好玩,我想使用selectOneMenu和filter,然后它只显示int值。枚举和筛选器使用可能有问题?也许我错了?现在,我没有时间玩这个。无论如何,你帮我澄清了几件事,非常感谢。
membership.monthInt
@ManagedBean
@ViewScoped
public class MonthEnumBean
{

    private Months month;
    private int monthInt;
    private String monthString;

    public MonthEnumBean()
    {
        monthInt = 12;

    }

    public Months[] getMonths()
    {
        return month.values();
    }

    public Months getMonth()
    {
        return month;
    }

    public void setMonth(Months month)
    {
        this.month = month;
    }

    public int getMonthInt()
    {
        return monthInt;
    }

    public void setMonthInt(int monthInt)
    {
        this.monthInt = monthInt;
    }

    public Months getMonthString()
    {
        return month.getMonthName(monthInt);
    }
}
<h:form>
    <p:dataTable id="month" var="month" value="#{monthEnumBean.months}">
        <p:column id="modelHeader" exportable="true">
            <f:facet name="header">
                <h:outputText value="Month Name" />
            </f:facet>
            <h:outputText value="#{month}" />
        </p:column>
        <p:column>
            <f:facet name="header">
                <h:outputText value="Int " />
            </f:facet>
            <h:outputText value="#{month.intValue}" />
        </p:column>
    </p:dataTable>

    <p:panel>
    <p:selectOneMenu value="#{monthEnumBean.month}">
        <f:selectItem itemLabel="Select One" itemValue="" />
        <f:selectItems value="#{monthEnumBean.months}" var="month" itemLabel="#{month}" itemValue="#{mont.intValue}" />
    </p:selectOneMenu>
    </p:panel>
    <p:commandButton value="Submit" update="@form" oncomplete="dlg.show()" />
    <p:dialog header="Selected Values" modal="true" widgetVar="dlg">
        <h:panelGrid columns="1" id="display">
            <h:outputText value="Name: #{monthEnumBean.month}" />
            <h:outputText value="Intvalue: #{monthEnumBean.month.intValue}" />
        </h:panelGrid>
    </p:dialog>
    <p:panel>
        <p:panelGrid columns="3">
            <h:outputText value="Number from database: #{monthEnumBean.monthInt }" />                   
            <h:outputText value="String name of number from database: #{monthEnumBean.monthString}" />
        </p:panelGrid>
    </p:panel>
</h:form>