0

我有一个 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 value=#{bean.date}中添加这一行

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

任何帮助,将不胜感激。

4

2 回答 2

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:" />
    
于 2012-10-26T05:45:00.763 回答
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"/>

获得:

在此处输入图像描述

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

于 2017-11-08T02:16:07.997 回答