2012-10-25 41 views
0

我有一個XHTML頁面如何顯示在P日期和時間值:壓延

<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}

中添加此行但它沒有顯示日期以及日曆圖標。

任何幫助,將不勝感激。

+2

對於初學者,您的'date'變量應該是java.util.Date而不是'String'。將其更改爲日期類型,並在此處設置帖子更多的xhtml頁面的格式。該頁面上的「」在哪裏?爲什麼日曆以'disabled =「true」'呈現? – kolossus

回答

0

<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:" /> 
    
0

由於StackOverflow的只是epically復活這個問題到首頁,讓我試着回答一下。

這裏有很多問題。讓我們從頭開始:

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)如果你只想顯示日期,使用默認的輸出文本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

+0

謝謝,你能指出其他答案的主要(相關)差異嗎?似乎與我相同(但我只是做了一個半快速掃描) – Kukeltje