Pasar los datos de un cuadro de diálogo o evento Schedule de un JSF otro

Uso Primefaces 6.0, JSF 2.2, NetBeans y MySQL. Идея La es que la aplicación permita agendar los casos desde un Schedule partir de un cuadro de dialogo. Después de ser creado я gustaría que al abrir el cuadro del dialogo partir de un button de "Detalles del CDC" se redireccione otra перспектива, JSF (otro XHTML) надел se va poder incluir мэр información, отрезвляют el caso y que se pueda descargar el adjunto (incluido en la fase del cuadro de dialogo).

Довод "против" перспективы Anexo Schedule y Dialog:

<div id="top" class="top">
    <ui:insert name="top">
        <ui:include src="/Templates/MenuBar.xhtml"/>
    </ui:insert>
</div>
<div id="content" class="center_content">
    <ui:insert name="content">
        <h:form id="myForm" enctype="multipart/form-data">
            <p:growl id='msgGrowl' showDetail='true'/>
            <p:schedule
                id = "scheduleCdc"
                value="#{cdcBean.scheduleModel}"
                widgetVar="scheduleCdc"
                locale='es'
                timeZone="America/Caracas"
                resizable="true" aspectRatio="2.8"
            > 
                <p:ajax
                    event="eventSelect"
                    listener="#{cdcBean.selectCdc}"
                    update="cdcDetail"
                    oncomplete="PF('boxDialog').show();"
                />
                <p:ajax
                    event="dateSelect"
                    listener="#{cdcBean.selectNewCdc}"
                    update="cdcDetail"
                    oncomplete="PF('boxDialog').show();"
                />
                <p:ajax
                    event="eventMove"
                    listener="#{cdcBean.moveCdc}"
                    update="scheduleCdc"
                />
                <p:ajax
                    event="eventResize"
                    listener="#{cdcBean.resizeCdc}"
                    update="scheduleCdc"
                />
            </p:schedule>
            <p:dialog
                widgetVar="boxDialog"
                header="Control de Cambio"
                resizable="true"
                modal="true"
                showEffect="click"
            >
                <p:outputPanel id="cdcDetail">
                    <p:outputLabel
                        value="Número del CDC: "
                        rendered="#{cdcBean.cdc.idCdc gt 0}"
                    />
                    <h:outputText
                        value="#{cdcBean.cdc.idCdc}"
                        rendered="#{cdcBean.cdc.idCdc gt 0}"
                    />
                    <h:panelGrid columns="2">
                        <p:outputLabel value="Título"/>
                        <p:inputText
                            value="#{cdcBean.cdc.description}"
                            required="true"
                        />
                        <p:outputLabel value="Desde: "/>
                        <p:calendar
                            value="#{cdcBean.cdc.dateStart}"
                            pattern="dd/MM/yyyy HH:mm"
                            required="true"
                        />
                        <p:outputLabel value="Hasta: "/>
                        <p:calendar
                            value="#{cdcBean.cdc.dateEnd}"
                            pattern="dd/MM/yyyy HH:mm"
                            required="true"
                        />
                        <h:outputLabel value="Documentación: "/>
                        <h:panelGroup>
                            <p:fileUpload
                                uploadLabel="Adjuntar"
                                fileUploadListener="#{cdcBean.elegirArchivo}"
                                value="#{cdcBean.cdc.document}"
                                fileLimit="1"
                                allowTypes="/(\.|\/)(docx|doc|pdf|png|PNG)$/"
                                cancelLabel="Cancelar"
                                id="fileupload"
                                label="Elegir"
                                mode="advanced"
                                update="nombreDocumento"
                                sizeLimit="10000000"
                                invalidFileMessage="Tipo de archivo no válido"
                                invalidSizeMessage="El archivo supera los 10 Mb"
                                rendered="#{cdcBean.cdc.rutaDocument eq null}"
                            />
                            <p:outputLabel
                                id="nombreDocumento"
                                value ="#{cdcBean.cdc.rutaDocument}"
                            />
                        </h:panelGroup>
                        <p:outputLabel value="Interrupción: " />
                        <h:selectBooleanCheckbox
                            id="check"
                            value="#{cdcBean.cdc.interruption}"
                            onclick="hideOrShow(this.checked);"
                        /> <!--onclick="hideOrShow(this.checked);"-->
                    </h:panelGrid>
                    <h:panelGroup
                        id="myPanel"
                        style="display: none;"
                    > <!--style="display: none;"-->
                        <p:outputLabel value="Tiempo de Interrupción: " />
                        <p:inputText
                            id="content"
                            value="#{cdcBean.cdc.timeInterruption}"
                        />
                    </h:panelGroup>
                    <h:panelGrid columns="3" >
                        <p:commandButton
                            value="Guardar"
                            actionListener="#{cdcBean.saveCdc}"
                            update='msgGrowl
                            scheduleCdc' oncomplete="PF('boxDialog').hide();"
                        />
                        <p:commandButton
                            value="Borrar"
                            type="reset"
                            update="boxDialog"
                            immediate="true"
                        />
                        <p:button
                            icon="ui-icon-search"
                            value="Detalles del CDC"
                            rendered="#{cdcBean.cdc.idCdc gt 0}"
                            outcome="CreateCDC"
                        >
                            <f:param name="idCdc" value="#{cdcBean.cdc}"  />
                        </p:button>
                    </h:panelGrid>
                </p:outputPanel>
            </p:dialog>
        </h:form>
    </ui:insert>
</div>

El Bean asociado:

@PostConstruct
public void begin() {
    Logger.getLogger(getClass().getName()).log(Level.INFO, "Log de prueba, begin");

    cdc = new Cdc();
    scheduleModel = new DefaultScheduleModel();
    cdcDao = new CdcDao();

    try {
        cdcList = cdcDao.getCdcList();
    } catch (Exception ex) {
        Logger.getLogger(CdcBean.class.getName()).log(Level.SEVERE, null, ex);
        FacesContext.getCurrentInstance().addMessage(
            null,
            new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Error")
        );
    }
    for (Cdc c : cdcList) {
        DefaultScheduleEvent evt = new DefaultScheduleEvent();
        evt.setTitle(c.getDescription());
        evt.setStartDate(c.getDateStart());
        evt.setEndDate(c.getDateEnd());

        try {
            evt.setData(c.getIdCdc());
        } catch (Exception ex) {
            Logger.getLogger(CdcBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        evt.setEditable(true);

        if (c.isInterruption()) {
            evt.setStyleClass("utilisateur1-event");
        }
        Logger.getLogger(
            getClass().getName()
        ).log(Level.INFO, "style class: {0}", evt.getStyleClass());
        scheduleModel.addEvent(evt);
    }
}
public void selectCdc(SelectEvent selectEvent) throws Exception {
    Logger.getLogger(
        getClass().getName()
    ).log(Level.INFO, "Seleccionando Evento en Calendario");
    ScheduleEvent event = (ScheduleEvent) selectEvent.getObject();
    for (Cdc c : cdcList) {
        if (c.getIdCdc() == (int) event.getData()) {
            cdc = c;
            break;
        }
    }
}

Vista надетый deseo pasar la información:

<f:metadata>
    <f:viewParam name="idCdc" value="#{cdcBean.cdc}"  />
</f:metadata>
<h:body>
    <div id="top" class="top">
        <ui:insert name="top">
            <ui:include src="/Templates/MenuBar.xhtml"/>
        </ui:insert>
    </div>
    <div id="content" class="left_content">
        <ui:insert name="content"></ui:insert>
        <h:form id="form">
            <p:panel id="panel" header="Datos del CDC" style="margin-bottom:5px;">
                <p:messages id="messages" />
                <h:panelGrid columns="3" cellpadding="5">
                    <h:outputText value="Número del CDC: " />
                    <h:outputText  value="#{cdcBean.cdc.idCdc}"/><p></p>
                    <h:outputText value="Estatus " />
                    <h:outputText  value="Generado"/><p></p>
                    <!-- <p:outputLabel for="datetime" value="Fecha Inicio: " />
                    <p:calendar
                        id="datetime"
                        value="#{cdcBean.cdc.dateStart}"
                        pattern="dd/MM/yyyy HH:mm" locale="es"
                    />
                    <p:message for="datetime" />
                    <p:outputLabel for="datetimeend" value="Fecha Fin " />
                    <p:calendar
                        id="datetimeend"
                        value="#{cdcBean.cdc.dateEnd}"
                        pattern="MM/dd/yyyy HH:mm:ss"
                    />
                    <p:message for="datetimeend" />-->
                    <p:outputLabel for="time" value="Duración del CDC" />
                    <h:outputText id="time" value="#{cdcBean.cdc.time}" />
                    <h:outputText value="Interrupción de Servicio: " />
                    <p:selectBooleanCheckbox value="#{cdcBean.cdc.interruption}" />
                    <p/>
                    <p:outputLabel
                        for="timeInterruption"
                        value="Duración de la Interrupción: "
                    />
                    <h:outputText
                        id="timeInterruption"
                        value="#{cdcBean.cdc.timeInterruption}"
                    />
                </h:panelGrid>
            </p:panel>
        </h:form>
    </div>
</h:body>
2
задан 12.03.2017, 03:57
1 ответ

Я, если я использую managedBean достижения @ViewScoped, и оно я функционировало, таким образом

Восток - мой календарь temgo dialog, где я могу perdir дополнительный informaci¦n, который нуждался для события

.xhtml в

 <p:schedule id="schedule" value="#{agendaAudienciaMB.schedule}"  widgetVar="myschedule" timeZone="America/Guatemala" 
                    locale="es" minTime="7:00" maxTime="18:00" draggable="false" resizable="false">  
            <p:ajax event="eventSelect" listener="#{agendaAudienciaMB.onEventSelect}" update="@form" oncomplete="PF('eventDialogAudiencia').show();"   />
 </p:schedule>

В ManagedBean, объявил три переменные, которые используются для лучшего управления календаря, если у тебя есть какое-то сомнение относительно metos, они находятся в официальном documentaci¦n primefaces

private ScheduleModel schedule;
private ScheduleModel lazyEventModel;
private ScheduleEvent audiencia = new DefaultScheduleEvent();

public ScheduleModel getEventModel() {
    return schedule;
}

public ScheduleModel getLazyEventModel() {
    return lazyEventModel;
}

public void addEvent(ActionEvent actionEvent) {
    if (audiencia.getId() == null) {
        schedule.addEvent(audiencia);
    } else {
        schedule.updateEvent(audiencia);
    }

    audiencia = new DefaultScheduleEvent();
}

public void onEventSelect(SelectEvent selectEvent) {
    audiencia = (ScheduleEvent) selectEvent.getObject();
    audiencia.getDescription();
    fechaAudiencia = (RdFechaAudiencia) audiencia.getData();
    log.debug("Evento seleccionado: " + fechaAudiencia.toString());
    Response<RdFechaAudiencia> response = audienciaBean.findFechaAudienciaById(fechaAudiencia.getIdFechaAudiencia());
    if (response.isOk()) {
        fechaAudiencia = response.getValue();
    }
}

public void onDateSelect(SelectEvent selectEvent) {
    audiencia = new DefaultScheduleEvent("", (Date) selectEvent.getObject(), (Date) selectEvent.getObject());
}

public void onEventMove(ScheduleEntryMoveEvent event) {
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Fecha movida", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());

    addMessage(message);
}

public void onEventResize(ScheduleEntryResizeEvent event) {
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Evento ampliado", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());

    addMessage(message);
}
1
ответ дан 24.11.2019, 10:37