2014-10-31 118 views
0

我使用RichFaces的组件丰富的:PICKLIST提供可以选择的日期项目在丰富:PICKLIST

当数据被验证的JSF页面日期对象的列表显示了一个验证错误:“验证错误:值无效“。我知道,日期对象不知何故被转换。但我不知道为什么? 首先我试着设置属性dateConverter:

converter="#{javax.faces.convert.DateTimeConverter}" 

这没有奏效。之后,我添加了以下声明:

<f:convertDateTime pattern="MM/dd/yyyy" /> 

也没有解决问题。

btw:两者有什么不同?

请发现整个源代码如下:

XHTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:a4j="http://richfaces.org/a4j" 
     xmlns:rich="http://richfaces.org/rich"> 

    <ui:composition template="/templates/template.xhtml"> 
     <ui:define name="body"> 
      <h:form prependId="false"> 
       <rich:pickList id = "datePL" 
           value="#{richBean.listOfNewDates}" 
           sourceCaption="All Dates" 
           targetCaption="New Dates" 
           > 
        <f:selectItems value="#{richBean.listOfDates}" 
            var="_item" itemValue="#{_item}" itemLabel="#{_item}" /> 
         <f:convertDateTime pattern="MM/dd/yyyy" /> 

       </rich:pickList> 

       <a4j:commandButton action="#{richBean.printListOfDates()}" value="Print"/> 

       <rich:notifyMessages stayTime="2000" nonblocking="true" /> 

      </h:form> 
     </ui:define> 
    </ui:composition> 
</html> 

托管Bean:

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.List; 
import javax.annotation.PostConstruct; 
import javax.faces.bean.SessionScoped; 
import javax.inject.Named; 

@Named("richBean") 
@SessionScoped 
public class RichBean implements Serializable { 

    private static final long serialVersionUID = -2403138958014741653L; 
    private List<Date> listOfDates; 
    private List<Date> listOfNewDates; 

    @PostConstruct 
    public void init() { 
     setListOfDates(new ArrayList<Date>()); 
     Calendar cal = Calendar.getInstance(); 
     getListOfDates().add(cal.getTime()); 
     cal.add(Calendar.DATE, 1); 
     getListOfDates().add(cal.getTime()); 
     cal.add(Calendar.DATE, 2); 
     getListOfDates().add(cal.getTime()); 
    } 

    /** 
    * @return the listOfDates 
    */ 
    public List<Date> getListOfDates() { 
     return listOfDates; 
    } 

    /** 
    * @return the listOfNewDates 
    */ 
    public List<Date> getListOfNewDates() { 
     return listOfNewDates; 
    } 

    /** 
    * @param listOfNewDates the listOfNewDates to set 
    */ 
    public void setListOfNewDates(List<Date> listOfNewDates) { 
     this.listOfNewDates = listOfNewDates; 
    } 

    public void printListOfDates() { 
     for (Iterator<Date> it = listOfNewDates.iterator(); it.hasNext();) { 
      System.out.println("Neues Datum = " + it.toString()); 
     } 
    } 

    /** 
    * @param listOfDates the listOfDates to set 
    */ 
    public void setListOfDates(List<Date> listOfDates) { 
     this.listOfDates = listOfDates; 
    } 
} 

没有例外是在服务器端抛出。

有人可以帮忙吗?这将是伟大的!提前致谢!

+0

我知道这个话题已经不客气几次,但我无法找到对我的问题的答案。任何帮助表示赞赏!谢谢! – Tom 2014-11-01 08:50:03

回答