我有一个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}
但它没有显示日期以及日历图标。
任何帮助将不胜感激。
答案 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"/>
获得:
您可以申请一些自定义。请参阅Primefaces演示页面以了解有关Calendar Primefaces组件的更多信息:https://www.primefaces.org/showcase/ui/input/calendar.xhtml