如何在p:日历中显示日期和时间值

时间:2012-10-25 17:46:30

标签: primefaces

我有一个xhtml页面

<p:outputPanel>
    <p:outputLabel id="temp1"
    for="temp11" value="Start Date:" />
    <p:calendar id="startDateId"
    widgetVar="startDateFromVar" title="#"
    showOn="button" disabled="true"/>
</p:outputPanel>

private String date;

/**
     * @return the Date
     */
    public String getDate() {
        date = "11/10/2012 19:15";
        return date;
    }

    /**
     * @param Date the Date to set
     */
    public void setDate(String ate) {
        this.date = date;
    }

如何在xhtml中显示日期?我一直在p:calendar添加这一行 值=#{bean.date}

但它没有显示日期以及日历图标。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您使用<p:calendar/>显示的值应为java.util.Date的类型(正如kolossus已指出的那样)。如果您已经拥有日期的已知字符串表示形式,则需要使用java.text.SimpleDateFormat解析该字符串以获取java.util.Date对象:

private void parserDate() {
    String dateStr = "11/10/2012 19:15";
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm");
    try {
        date = formatter.parse(dateStr);
    } catch (ParseException ex) {
        // handle
    }
}

public Date getDate() {
    if (date == null)
        parserDate();
    return date;
}

public void setDate(Date date) {
    this.date = date;
}

日历元素的显示模式也可以格式化。要使用与dateStr相同的格式显示日期,请使用pattern属性:

<p:calendar id="startDateId" value="#{bean.date}" disabled="true"
                    widgetVar="startDateFromVar" pattern="dd/MM/yyyy HH:mm"/>

  • 如果您使用日历上的disabled="true"选项,请使用p:inputText代替显示您的private String date。然后你可以消除额外的解析和格式化:

    <p:inputText value="#{bean.date}" disabled="true"/>
    
  • 指向<p:outputLabel for="..."/>中不存在的ID,结果为FacesException。也许你想要:

    <p:outputLabel id="temp1" for="startDateId" value="Start Date:" />
    

答案 1 :(得分:1)

由于StackOverflow只是将这个问题迅速恢复到主页,让我试着回答它。

这里有很多问题。让我们从头开始:

1)您在bean中的日期不是真实日期。这是一个字符串!解决方案很简单:如果要处理日期,请更改bean以处理java.util.Date而不是java.lang.String。

import java.util.Date;

public class MyDateBean {

    private Date date;

    public Date getDate() {
        return this.date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

}

2)如果只想显示日期,请使用默认的outputtext JSF组件来执行此操作。请记住添加所需格式的转换器:

<h:outputText value="#{myDateBean.date}" >
    <f:convertDateTime pattern="dd/MM/yyyy HH:mm" />
</h:outputText>

顺便说一句,您使用过的组件:

<p:calendar id="startDateId"
    widgetVar="startDateFromVar" title="#"
    showOn="button" disabled="true"/>

是一个primefaces日历组件,允许用户从日历面板中选择日期。如果你需要,可以这样做:

<p:calendar id="startDateId" value="#{myDateBean.date}" pattern="MM/dd/yyyy HH:mm:ss"/>

获得:

enter image description here

您可以申请一些自定义。请参阅Primefaces演示页面以了解有关Calendar Primefaces组件的更多信息:https://www.primefaces.org/showcase/ui/input/calendar.xhtml

相关问题