繁体   English   中英

Ajax事件不起作用 <p:calendar> 组件PrimeFaces

[英]Ajax event dosn't work in <p:calendar> component PrimeFaces

我的xhtml页面中有两个具有timeOnly='true'属性的<p:calendar>组件,我需要验证这些组件。 如果我选择第一次时间为上午9:00,则第二部分需要进行设置(上午10:00),因此我使用<p:ajax>来更新第二部分,但是我真的不知道为什么该事件没有发生。 dateSelec工作,我尝试使用dateSelecblurchange并且只能使用blur而不是第一次使用,而不是我的需要。

这是我的xhtml

 <p:dialog id="dlNuevo" widgetVar="agregarOferta" header="Nueva oferta" modal="true" resizable="false" appendTo="@(body)" closable="false">
        <h:form id="nuevoHorarioForm">
            <p:outputPanel id="nuevoPanel">
                <h:panelGrid columns="2" id="nuevoGrid">
                <h:outputLabel value="Hora inicio" for="calendarInicio"/>
                <p:calendar id="calendarInicio" widgetVar="horaInicioSpin" value="#{hbean.horaInicial}" timeOnly="true" pattern="HH:mm a">

                    <p:ajax process="@this" event="blur" update="finCal"/>
                </p:calendar>

                <h:outputLabel value="Hora final" for="finCal"/>
                <p:calendar id="finCal" widgetVar="calendarFin" value="#{hbean.horaFinal}" minHour="#{hbean.horaInicial.hours}" 
                            timeOnly="true" pattern="HH:mm a"/>

                <h:outputLabel value="Días"/>    
                <p:selectManyCheckbox layout="pageDirection" value="#{hbean.diasLista}" >
                    <f:selectItems value="#{hbean.enumeradorDias}" var="dias" itemLabel="#{dias.getLongName( facesContext.viewRoot.locale )}"/>
                </p:selectManyCheckbox>

                <p:commandButton value="Guardar" actionListener="#{hbean.guardarHora(hbean.horaInicial, hbean.horaFinal)}" oncomplete="PF('agregarOferta').hide()" 
                                 update=":formTable:ofertasTBL nuevoHorarioForm :mensajesOfertas"/>
                <p:commandButton value="Cancelar" onclick="PF('agregarOferta').hide()">

                </p:commandButton>   
            </h:panelGrid>
            </p:outputPanel>                
        </h:form>
    </p:dialog> 

这是我的豆子

 @ManagedBean(name = "hbean")

    @ViewScoped

    public class

    HorariosOfertasBean extends SICEAbstractBean {
    private List<HorariosOfertados> horariosOferta;
    private HorariosOfertados horarioSeleccionado;
    private HorariosOfertados horarioItem;
    private Date horaFinal;
    private Date horaInicial;
    private Days[] diasLista;
    FacesMessage message = null;
    FacesContext currentInstance;
    FacesResourceUtil facesResouces;

    public Days[] getDiasLista() {
        return diasLista;
    }

    public void setDiasLista(Days[] diasLista) {
        this.diasLista = diasLista;
    }

    public List<HorariosOfertados> getHorariosOferta() {
        return horariosOferta;
    }

    public void setHorariosOferta(List<HorariosOfertados> horariosOferta) {
        this.horariosOferta = horariosOferta;
    }

    public Date getHoraFinal() {
        return horaFinal;
    }

    public void setHoraFinal(Date horaFinal) {
        this.horaFinal = horaFinal;
    }

    public Date getHoraInicial() {
        return horaInicial;
    }

    public void setHoraInicial(Date horaInicial) {
        this.horaInicial = horaInicial;
    }

    public HorariosOfertados getHorarioSeleccionado() {
        return horarioSeleccionado;
    }

    public void setHorarioSeleccionado(HorariosOfertados horarioSeleccionado) {
        this.horarioSeleccionado = horarioSeleccionado;
    }

    public HorariosOfertados getHorarioItem() {        
        return horarioItem;
    }

    public void setHorarioItem(HorariosOfertados horarioItem) {
        this.horarioItem = horarioItem;
    }

    public Days[] getEnumeradorDias() {
        return Days.values();
    }

    public void convertTime(XMLGregorianCalendar principio, XMLGregorianCalendar ultimo){                
        horaInicial = principio.toGregorianCalendar().getTime();        
        horaFinal = ultimo.toGregorianCalendar().getTime(); 
    }

    public void convertDays(ListaDiasType valor){
        if(valor != null && valor.getDias() != null){
            diasLista = new Days[valor.getDias().size()];
            for(int i=0;i<valor.getDias().size();i++){
                diasLista[i] = Days.valueOf(valor.getDias().get(i).intValue());
      }      
        }
    }

    public void editarForm(){
        convertTime(getHorarioSeleccionado().getHoraInicio(), getHorarioSeleccionado().getHoraFin());
        convertDays(getHorarioSeleccionado().getDias());
    }

    @PostConstruct
    public void init() {
        facesResouces = new FacesResourceUtil("mx.edu.uteq.sice.core.resources.OfertasMessages", false); 
        horarioSeleccionado = new HorariosOfertados();
        horarioItem = new HorariosOfertados();
        setHorariosOferta(getService().getCommonWebServicePort().getHorariosOfertados());
    }
public void guardarHora(Date hInicio, Date hFin) throws DatatypeConfigurationException, EntityConstraintException_Exception, EntitySQLException_Exception {
        Organizaciones org = new Organizaciones();
        Short org2 = 2;

        org.setIdOrganizacion(org2);
        horarioItem.setIdOrganizacion(org);

        GregorianCalendar gcini = new GregorianCalendar();
        gcini.setTime(hInicio);
        GregorianCalendar gcfin = new GregorianCalendar();
        gcfin.setTime(hFin);

        XMLGregorianCalendar xmlInicio = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcini);
        XMLGregorianCalendar xmlFin = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcfin);

        ListaDiasType listaDiasType = new ListaDiasType();
        for (Days diasLista1 : diasLista) {
            listaDiasType.getDias().add(BigDecimal.valueOf(Days.valueOf(diasLista1.name()).getDayOfWeekValue()));
        }
        horarioItem.setDias(listaDiasType);
        horarioItem.setHoraInicio(xmlInicio);
        horarioItem.setHoraFin(xmlFin);
        horarioItem = getService().getCommonWebServicePort().insertHorariosOferta(getHorarioItem());
        getHorariosOferta().add(horarioItem);
        message = new FacesMessage(FacesMessage.SEVERITY_INFO, facesResouces.getString("offerSchedule.add"), "Operación Exitosa");
        currentInstance = FacesContext.getCurrentInstance();
        currentInstance.addMessage(null, message);

        setHorarioItem(new HorariosOfertados());
    }

这就是组件的作用。 在此处输入图片说明

我真的需要帮助来理解为什么会这样。 提前致谢。

如果要在pf:日历中使用change事件,则必须在pf:ajax上使用f:ajax;如果要使用pf:ajax dateSelect事件,那么您是否在侦听器方法中使用DateSelectEvent?

public void myMethod(DateSelectEvent event)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM