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
謝謝Michele。這解決了這個錯誤信息,但是我現在收到'j_idt2:'Wed Feb 27 09:11:55 EST 2013'不能被理解爲日期。'我需要做其他事嗎?初始頁面加載的默認值爲'private Date start = new DateTime()。minusMonths(12).toDate();'。單擊commandButton後,我收到此錯誤。 – Stevenyc091
@Steve - 假定默認格式爲「MON dd,YYYY」,您仍然需要指定轉換器的格式。使用' '符號代替,所以你可以定義 –
kolossus
@kolossus的格式,如果在組件裏面,我會加上這樣的格式。 f:viewParam>'?當我這樣做時,我收到了同樣的錯誤。 –
Stevenyc091