[richfaces-issues] [JBoss JIRA] (RF-13108) rich:calendar nested a4j:ajax event not firing

Francesco Croci (JIRA) jira-events at lists.jboss.org
Fri Aug 30 05:03:03 EDT 2013


    [ https://issues.jboss.org/browse/RF-13108?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12800538#comment-12800538 ] 

Francesco Croci edited comment on RF-13108 at 8/30/13 5:01 AM:
---------------------------------------------------------------

Related to this problem (i'm trying to apply this example(http://relation.to/12480.lace) from Ilya) I noticed the following:

- if the days table is not present, no event is fired. As soon as the table is there and you choose a day, the event is fired (at least handleEvent is called and the bean value is set,
but still no alert pops up). But this happens only the *first time* you select a day and as long as you don't change the month, no other events are fired.

Here is my calendar code:

<rich:calendar
  id="billPeriod"
  value="#{adminModel.billPeriodForSAP}"
  popup="false"
  showWeekDaysBar="false"
  showFooter="false"
  datePattern= "MM-yyyy"
  oncurrentdateselected="alert('Hello')"
  locale="#{adminModel.locale}">
  <a4j:ajax event="change" render="out" listener="#{adminModel.handleEvent}"/>
</rich:calendar>
<h:outputText id="out" value="--#{adminModel.billPeriodForSAP}"/>

I'm using richfaces 4.3.3, glassfish 3.1.2.2 and firefox 23

I hope this could help as I really would bring the Ilya's example to work by me...
                
      was (Author: juza1):
    Related to this problem (i'm trying to apply this example(http://relation.to/12480.lace) from Ilya) I noticed the following:

- if the days table is not present, no event is fired. As soon as the table is there and you choose a day, the event is fired (at least handleEvent is called and the bean value is set,
but still no alert pops up). But this happens only the *first time* you select a day and as long as you don't change the month, no other events are fired.

Here is my calendar code:

<rich:calendar
  id="billPeriod"
  value="#{adminModel.billPeriodForSAP}"
  popup="false"
  showWeekDaysBar="false"
  showFooter="false"
  datePattern= "MM-yyyy"
  oncurrentdateselected="alert('Hello')"
  locale="#{adminModel.locale}">
  <a4j:ajax event="change" render="out" listener="#{adminModel.handleEvent}"/>
</rich:calendar>
<h:outputText value="--#{adminModel.billPeriodForSAP}"id="out" />

I'm using richfaces 4.3.3, glassfish 3.1.2.2 and firefox 23

I hope this could help as I really would bring the Ilya's example to work by me...
                  
> rich:calendar nested a4j:ajax event not firing
> ----------------------------------------------
>
>                 Key: RF-13108
>                 URL: https://issues.jboss.org/browse/RF-13108
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-a4j-core, component-validators
>    Affects Versions: 4.3.2
>         Environment: jboss 7.1.3 richfaces 4.3.2.final, chrome
>            Reporter: nathan dennis
>            Assignee: Pavol Pitonak
>              Labels: a4j:ajax, rich:calendar, rich:message
>
> nested a4j:ajax change event isn't functioning as expected. On "change" event, the expect result is that the value is moved into the target Date field of the backing bean. When using a4j:ajax, this does not happen.
> After speaking with ppitonak he believe that the order of the ajax with relation to the validators was import. however after closer inspection, the value wasn't making back to the bean even when the event was fired even with the order reversed.
> Logically the first date should be submitted to the backing bean on change even and made available for validation in the second dates validator. works with f:ajax.. doesnt work with a4j:ajax.
> {code}
> Request URL:http://oasis.monarchnc.org:10001/oasis/screening/edit.xhtml?cid=2
> Request Method:POST
> Status Code:200 OK
> Request Headersview source
> Accept:*/*
> Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
> Accept-Encoding:gzip,deflate,sdch
> Accept-Language:en-US,en;q=0.8
> Connection:keep-alive
> Content-Length:870
> Content-type:application/x-www-form-urlencoded;charset=UTF-8
> Cookie:JSESSIONID="gOuCLop-DL7U6D3fbNhptHmw.slave:server-three"; csfcfc=11Xfn_12Xfn; __utma=69432588.533798156.1374674467.1374674467.1374674467.1; __utmz=69432588.1374674467.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); org.monarchnc.commandcenter.location=1; org.monarchnc.commandcenter.security=NDNlZGQ3ZDU3NjIxYzI4YjM4YzZlOTM0YzQ3ZjAxYWQ_
> Faces-Request:partial/ajax
> Host:oasis.monarchnc.org:10001
> Origin:http://oasis.monarchnc.org:10001
> Referer:http://oasis.monarchnc.org:10001/oasis/screening/edit.xhtml?cid=2&id=143&dsRid=197&windowId=-9720
> User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
> Query String Parametersview sourceview URL encoded
> cid:2
> Form Dataview sourceview URL encoded
> create:create
> create:medrecordnumber:
> create:patientName:Ritchard Trickle
> create:patientPhone:
> create:patientEmail:
> create:startTimeOverrideInputDate:30/7/13 04:24 PM
> create:startTimeOverrideInputCurrentDate:07/2013
> create:endTimeOverrideInputDate:01/8/13 05:58 PM
> create:endTimeOverrideInputCurrentDate:08/2013
> create:screeningBeanScreeningProviderValue:
> create:screeningBeanScreeningProviderInput:dennis, nathan
> javax.faces.ViewState:-4869776129569305131:8783263118910249789
> javax.faces.source:create:startTimeOverride
> javax.faces.partial.event:change
> javax.faces.partial.execute:create:startTimeOverride @component
> javax.faces.partial.render:@component
> javax.faces.behavior.event:change
> org.richfaces.ajax.component:create:startTimeOverride
> rfExt:null
> AJAX:EVENTS_COUNT:1
> javax.faces.partial.ajax:true
> Response Headersview source
> Cache-Control:no-cache
> Connection:close
> Content-Type:text/xml;charset=UTF-8
> Date:Thu, 01 Aug 2013 15:59:07 GMT
> Server:Apache-Coyote/1.1
> Transfer-Encoding:chunked
> X-Powered-By:JSF/2.0
> {code}
> {code:xml}
> <?xml version='1.0' encoding='UTF-8' ?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <ui:composition 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:c="http://java.sun.com/jsp/jstl/core"	
> 	xmlns:a4j="http://richfaces.org/a4j"
> 	xmlns:rich="http://richfaces.org/rich"	
> 	template="/resources/scaffold/pageTemplate.xhtml">
> 	<f:metadata>
> 		<f:viewParam name="id" value="#{screeningBean.id}"/>
> 	</f:metadata>
> 	<ui:define name="main">
> 		<h:form id="create">
> 			
> 	<h:panelGrid columnClasses="label,component,required" columns="3">
> 		<h:outputLabel for="startTimeOverride" value="Start Time Override:"/>
> 		<rich:calendar value="#{screeningBean.screening.beginTime}" id="startTimeOverride"
>                     popup="true" datePattern="dd/M/yy hh:mm a" required="true" 
>                     showApplyButton="true"  >
>                     <f:validateRequired />
>                     <a4j:ajax event="change"  bypassUpdates="#{true}"/>			             			             
>                 </rich:calendar>
>  		<rich:message for="startTimeOverride" ajaxRendered="true" />
>                 <h:outputLabel for="endTimeOverride" value="End Time Override:" />
> 		<rich:calendar value="#{screeningBean.screening.endTime}" id="endTimeOverride"
>                     popup="true" datePattern="dd/M/yy hh:mm a"
>                     showApplyButton="true" >
>                     <f:validateRequired />
> 		    <f:validator validatorId="dateRangeValidator" />	
> 		    <rich:validator /> 
> 		    <a4j:ajax event="change"  bypassUpdates="#{true}"/>			             			             
>                 </rich:calendar>
>                 <rich:message for="endTimeOverride" ajaxRendered="true" />
> 	</h:panelGrid>
> 	<div class="buttons">
> 		<a4j:commandButton value="Complete" 
> 			action="#{screeningBean.updateScreening(2)}" 
> 			execute="@form"
> 			onclick="this.disabled=true; var that = this; setTimeout(function() that.disabled=false;},500);"  
> 			styleClass="btn btn-primary btn-primary-a4j"  />
> 	</div>
> 	</h:form>
> </ui:define>
> </ui:composition>
> {code}
> {code:title=DateRangeValidator.java}
> /**************************************************************
>  * Copyright (c) 2012 - 2013, Monarch, All rights reserved.
>  * 
>  * @author Nathan Dennis
>  * 
>  */
> package org.monarchnc.view.validators;
> import java.text.DateFormat;
> import java.text.SimpleDateFormat;
> import java.util.Date;
> import javax.faces.application.FacesMessage;
> import javax.faces.component.UIComponent;
> import javax.faces.component.UIInput;
> import javax.faces.context.FacesContext;
> import javax.faces.validator.FacesValidator;
> import javax.faces.validator.Validator;
> import javax.faces.validator.ValidatorException;
> import javax.persistence.EntityManager;
> import org.apache.deltaspike.core.api.provider.BeanProvider;
> import org.monarchnc.view.ScreeningBean;
> // TODO: Auto-generated Javadoc
> /**
>  * The Class DateRangeValidator.
>  */
> @FacesValidator("dateRangeValidator")
> public class DateRangeValidator implements Validator {
> 	
>     
>     /* (non-Javadoc)
>      * @see javax.faces.validator.Validator#validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)f
>      */
>     public void validate(final FacesContext ctx, final UIComponent component, final Object value) throws ValidatorException {
>                   
>     		ScreeningBean screeningBean = BeanProvider.getContextualReference(screeningBean.class, false);
>  			
>         		Date date =(Date) value; 
>         		if(screeningBean.getScreening().getBeginTime() != null && date != null)
>         		if(!date.after(screeningBean.getScreening().getBeginTime())){
>         			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,"End Date must be after Start Date!!.\n","End Date must be after Start Date!!\n"));
>         			
>         		}
>     	
>     
>     }
> }
> {code}
> {code:title=ScreeningBean.java}
> @Named
> @Transactional
> @ConversationScoped
> public class ScreeningBean implements Serializable{
> 	Screening screening = new Screening();
> 	public Class<? extends ViewConfig> claim(){
> 		 if (this.conversation.isTransient())
> 	      {
> 	         this.conversation.begin();
> 	      }...
>          }
> 	public Screening getScreening() {
> 		return screening;
> 	}
> 	public void setScreening(Screening screening) {
> 		this.screening = screening;
> 	}
> }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the richfaces-issues mailing list