Calendar primefaces given an error when render the page

jQuery UI Widgets
Post Reply
leoTotvs
Posts: 7
Joined: 14 Nov 2014, 22:08

14 Nov 2014, 22:31

Hi people!

I'm using JSF 2 and PrimeFaces 5.1
In my page when occur a onchange="submit()" the display an error. Show us part of my codes:

PAGE

Code: Select all

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<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:p="http://primefaces.org/ui" >
  <!--  <p:menuitem value="Cadastros" icon="ui-icon-circle-plus" url="cadastros.jsf" rendered="#{usuarioAnalistaBean.acessoMenuAD}" style="font-size:16px;" />-->
 
 
	<h:head>
		<title>Testando Notificação</title>
		<link type="text/css" rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/estilos.css" />
	</h:head> 
	 
	<h:body> 
	<p:layout fullPage="true">		
		
		<p:layoutUnit position="center" header="NOTIFICANDO O EVENTO" id="centro1" >
		
		<div class="logo"><h:graphicImage value="/imagens/logo_p.jpg" styleClass="formCadastro"/></div>   
		
		<h:form id="cadastroGD" prependId="false" styleClass="formCadastro">
			<p:growl id="msgs" showDetail="true"/>
			<h:panelGrid columns="1">
				<p:outputLabel value="NOTIFICADOR" for="notificador"/>
					<p:selectOneMenu id="notificador" value="#{notificacao.notificadorVO}" update=":cadastroGD"
					                 required="true" requiredMessage="É obrigatório informar a Área notificadora.">
						<f:selectItem  itemValue="" itemLabel="Selecione..."/>
						<f:selectItems value="#{notificacao.listaArea}" var="areaNotificadora"
									   itemLabel="#{areaNotificadora.nome}" itemValue="#{areaNotificadora}"/>                 
					</p:selectOneMenu>
			</h:panelGrid>
			
			<br/>
			
			<h:panelGrid columns="1">
				<p:outputLabel value="NOTIFICADO" for="notificado"/>
				<p:selectOneMenu id="notificado" value="#{notificacao.notificadoVO}" update=":cadastroGD"
				                 required="true" requiredMessage="É obrigatório informar a Área notificada.">
					<f:selectItem itemValue="" itemLabel="Selecione..."/>
					<f:selectItems value="#{notificacao.listaArea}" var="areaNotificada"
								   itemLabel="#{areaNotificada.nome}" itemValue="#{areaNotificada}"/>                 
				</p:selectOneMenu>
			</h:panelGrid>
			
			<br/>
			
			<h:panelGrid columns="2" cellpadding="5">
				<p:outputLabel for="dataOcorrencia" value="DATA E HORA OCORRÊNCIA:"/>
   				<p:calendar id="dataOcorrencia" value="#{notificacao.dataTela}" required="true" pattern="dd/MM/yyyy HH:mm"
   							requiredMessage="É obrigaório informar a data da Ocorrência" effect="fold"
   							mask="99/99/9999 99:99" locale="pt" maxdate="#{notificacao.dataMaxima()}" placeholder="Clique aqui para selecionar a data.">
   					 <p:ajax event="dateSelect" listener="#{notificacao.validaDataOcorrencia()}" update="msgs" />										
       			</p:calendar>
   			</h:panelGrid>
       		
       		<br/>
       		
       		<p:outputLabel for="classificacao" value="Classificação do Evento:" />
       		<h:panelGrid columns="2" cellpadding="15">
       			<h:panelGroup>
			        <p:selectOneRadio id="classificacao" value="#{notificacao.eventoObrigatorio}"  layout="grid" columns="1" 
			        				  required="true" requiredMessage="É obrigatório informar a CLASSIFICAÇÃO" 
			        				  onchange="submit()" valueChangeListener="#{notificacao.eventoSelecionado}" immediate="true">
			            <f:selectItems value="#{notificacao.listaEventoObrigatorio}" var="eventoObrigatorio" 
			            				itemLabel="#{eventoObrigatorio.descricao}" itemValue="#{eventoObrigatorio.id}"/>
			            <f:selectItem itemLabel="Outro" itemValue="0" /> 
			        </p:selectOneRadio>
			        <p:inputText value="#{notificacao.eventoObrigatorio}" size="30" 
			            	     rendered="#{notificacao.classificacao}" placeholder="Descreva aqui outra classificação."/>
			     </h:panelGroup>       	     
			</h:panelGrid>
			<br/>	    
And BEAN

Code: Select all


public String getDataTela() {
		return dataTela;
	}
public void setDataTela(String dataTela) throws ParseException {
		
		SimpleDateFormat dataHora = new SimpleDateFormat("dd/MM/yyyy HH:mm");
		SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
			
		Date parsedDate = sdf.parse(dataTela);
		String dataTelaHoraMin = dataHora.format(parsedDate);
		
		this.dataTela = dataTelaHoraMin; 
		
	}


public void onDateSelect(SelectEvent event) {
        
		FacesContext facesContext = FacesContext.getCurrentInstance();
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm");
        facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", format.format((Date)event.getObject())));

public void eventoSelecionado(ValueChangeEvent event ){
		
		Object value = event.getNewValue();
		
		int select = Integer.parseInt(value.toString());
		
		if(select == 0){
			classificacao = true;
		}else {
			classificacao = false;
		}
		
	}

public String validaDataOcorrencia() throws ParseException{
		
		if(dataTela != null){
			SimpleDateFormat dataHora = new SimpleDateFormat("dd/MM/yyyy HH:mm");
			SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
	
				
//			Date parsedDate = sdf.parse(dataTela);
//			
//			String dataTelaHoraMin = dataHora.format(parsedDate);
			
			Date dataTelaCompare = dataHora.parse(dataTela);//dataHora.parse(dataTelaHoraMin);
			Date dataLimiteCompare = dataHora.parse(dataLimite);
			
			FacesContext facesContext = FacesContext.getCurrentInstance();
			if(dataLimiteCompare.after(dataTelaCompare) || dataLimiteCompare.equals(dataTelaCompare)){
				 facesContext.addMessage(null, 
						 new FacesMessage(FacesMessage.SEVERITY_INFO, "Data e hora da ocorrência selecionada nos conformes", 
								 										"Data e hora informada: " +dataTela+".")); //+dataTelaHoraMin+
				 return null;
			}else {
				facesContext.addMessage(null, 
					new FacesMessage(FacesMessage.SEVERITY_ERROR, "A data e hora selecionada não pode ser maior que a data e hora atual.", 
		        													"A data hora informada: " +dataTela+" é superior a data Limite é: "+dataLimite+".")); //+dataTelaHoraMin+
				return null;
			}
		}
		return null;
	}
    }
My method set was modified to test, but it isn't work properly.. look the error:

Cannot format given Object as a Date

Code: Select all

java.lang.IllegalArgumentException: Cannot format given Object as a Date
	at java.text.DateFormat.format(Unknown Source)
	at java.text.Format.format(Unknown Source)
	at org.primefaces.component.calendar.CalendarUtils.getValueAsString(CalendarUtils.java:60)
	at org.primefaces.component.calendar.CalendarRenderer.encodeEnd(CalendarRenderer.java:60)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:79)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:66)
	at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:49)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Anybody help me? :cry:

Fasader
Posts: 6
Joined: 19 May 2014, 09:48

19 Nov 2014, 12:09

Calendar value needs to be a Date object, not a String.

Post Reply

Return to “PrimeUI”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests