[ 
https://issues.jboss.org/browse/RF-13108?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Brian Leathem updated RF-13108:
-------------------------------

    Assignee:     (was: Pavol Pitonak)

    
> 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
>              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
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to