nathan dennis created RF-13108:
----------------------------------

             Summary: 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


nested a4j:ajax change event isn't functioning as expected.

ajax event isn't always fired. after speaking with ppitonak it seemed as if the 
order of the ajax with relation to the validators was import. however after 
closer inspection (and may be a different problem), the value wasnt making back 
to the bean even when the event was fired.


{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