2016-12-02 80 views
0

我有一個號碼:日曆日期informatin丟失

<p:calendar id="begin" value="#{addIncidentView.begin}" required="true"> 
    <f:convertDateTime type="both" pattern="HH:mm" /> 
</p:calendar> 

我只想顯示在日曆字段的時間信息。當我現在保存時,日期信息將會丟失。它將是1.1.1970。

我能以某種方式保存日期信息並改變時間嗎?

回答

1

更新答:

您可以使用

<p:calendar id="begin" value="#{addIncidentView.begin}" pattern="HH:mm" timeOnly="true" converter="#{addDateConverter} /> 

和麪孔轉換

import java.util.Date; 

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 
import javax.faces.convert.Converter; 
import javax.inject.Named; 

@Named 
public class AddDateConverter implements Converter { 

    @Override 
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { 
     String[] split = arg2.split(":"); 

     Date date = new Date(); 
     date.setHours(Integer.parseInt(split[0])); 
     date.setMinutes(Integer.parseInt(split[1])); 

     return date; 
    } 

    @Override 
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { 
     if (arg2 instanceof Date) { 
      Date date = (Date) arg2; 
      return date.getHours() + ":" + date.getMinutes(); 
     } 

     return null; 
    } 
} 

轉換器IST只有概念證明的。使用更好的LocalDateTime和a DateTimeFormatter。但我認爲已初始化的日期信息已丟失。解決方法是將其保存在輔助bean的第二個屬性中。

+0

它具有相同的效果。日期信息將會丟失 – matthias

+0

你說得對。我已經延長了答案。 – jklee

+0

您不應該再使用date.setHours()和setMinutes()。改爲使用SimpleDateFormatter和日曆。 – lastresort