2014-02-26 22 views
1

我有兩個日曆,一個用於開始日期和一個用於結束日期。當我點擊命令按鈕來觸發方法updateAccount我收到錯誤消息:<p:日曆轉換錯誤設置值

Conversion Error setting value 'Tue Feb 26 16:41:43 EST 2013' for 'null Converter'.Conversion Error setting value 'Tue Feb 26 16:41:43 EST 2013' for 'null Converter'. 
Conversion Error setting value 'Tue Feb 25 16:41:43 EST 2014' for 'null Converter'.Conversion Error setting value 'Tue Feb 25 16:41:43 EST 2014' for 'null Converter'. 

命令按鈕應該從selectmenu值和日曆作爲SQL查詢的參數重新加載頁面。分配給日曆的值是Date類型。是否因爲日曆的輸出是String類型並試圖將其分配給Date類型的變量而導致此錯誤?從我在線發現的例子不需要轉換器。那是不正確的?如果是這樣,我該如何解決這個錯誤信息。

我的JSF頁面:

<f:metadata> 
    <f:viewParam name="account" value="#{accountAnalysisBean.account}" /> 
    <f:viewParam name="start" value="#{accountAnalysisBean.start}" /> 
    <f:viewParam name="end" value="#{accountAnalysisBean.end}" />  
    <f:viewAction action="#{accountAnalysisBean.pullData}" /> 
</f:metadata> 

<h:form> 
    <p:panelGrid columns="6"> 
    <f:facet name="header"> 
    <p:selectOneMenu id="pickAccount" value="#{accountAnalysisBean.pickAccount}" required="true" >  
    <f:selectItems value="#{editAccountBean.allAccounts}" />         
     </p:selectOneMenu> 
     <h:outputLabel value="Start Date: " /> 
     <p:calendar id="start" value="#{accountAnalysisBean.start}" pattern="MM/dd/yyyy" navigator="true" /> 
     <h:outputLabel value="End Date: " /> 
     <p:calendar id="end" value="#{accountAnalysisBean.end}" pattern="MM/dd/yyyy" navigator="true" /> 
     <p:commandButton value="Get Account" action="#{accountAnalysisBean.updateAccount}" > 
      <f:param name="start" value="#{accountAnalysisBean.start}"/> 
      <f:param name="end" value="#{accountAnalysisBean.end}"/>  
      <f:param name="account" value="#{accountAnalysisBean.id}"/> 
     </p:commandButton> 
     </f:facet> 
    </p:panelGrid> 
</h:form> 

我的豆:

@ManagedBean 
@ViewScoped 
public class AccountAnalysisBean { 

private String account = ""; 
private String id = ""; 
private String pickAccount = ""; 
private Date start; 
private Date end; 

//gettters and setters 

public void pullData() { 

    if (account != "") { 

     //pull various fields from database given account value 
    } else {  
     //set default null values 
    } 
} 

public void updateAccount() { 

fix = DAOFactory.getInstance("fix_site2.jdbc"); 
datalist = fix.getMyDataDAO(); 
id = datalist.findAccountID(pickAccount); //returns an ID from a DB given account selected from menu 

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); 
ec.redirect(ec.getRequestContextPath() + "/AccountAnalysis.xhtml?account=" + id + 
       "&start=" + start + "&end=" + end + "&includeViewParams=true"); 
} 

//remained of code omitted for clarity 

} 

我使用JSF 2.2和Primefaces 4

回答

1

您使用

<f:viewParam name="start" value="#{accountAnalysisBean.start}" /> 
<f:viewParam name="end" value="#{accountAnalysisBean.end}" /> 

和這些屬性是Date對象,而請求參數是String s,所以你需要一個轉換器。

<f:viewParam name="start" value="#{accountAnalysisBean.start}" converter="javax.faces.DateTime"> 

應該工作。

credit:JSF 2.0: <f:viewParam> and default converters

+0

謝謝Michele。這解決了這個錯誤信息,但是我現在收到'j_idt2:'Wed Feb 27 09:11:55 EST 2013'不能被理解爲日期。'我需要做其他事嗎?初始頁面加載的默認值爲'private Date start = new DateTime()。minusMonths(12).toDate();'。單擊commandButton後,我收到此錯誤。 – Stevenyc091

+1

@Steve - 假定默認格式爲「MON dd,YYYY」,您仍然需要指定轉換器的格式。使用''符號代替,所以你可以定義 – kolossus

+0

@kolossus的格式,如果在組件裏面,我會加上這樣的格式。'?當我這樣做時,我收到了同樣的錯誤。 – Stevenyc091

相關問題