|
|
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
Добрый день! Мне остался последний шаг для решения очередной задачи в рамках проекта и я ни как не могу понять как его сделать ... А дело в том, что после закрытия модального окна rich:modalPanel мне необходимо перерисовать некоторые компоненты формы (ну или всю форму), вызвавшей это самое модальное окно. Вот собственно в этом и есть суть вопроса: Как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 14:13:08 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
А что не получается? Ну сделайте кнопку на модальной панели которая посылает аякс запрос и отрисовывает все что вам нужно, <a4j:commandButton actionLietener="" oncomplete="modalPanel.hide()"/> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 14:18:15 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
... кнопка такая в модальном окне есть: <a4j:commandButton value="Перейти" action="#{objectSearch.movedToObject}" reRender="reRenderList" onclick="javascript:Richfaces.hideModalPanel('tplSearchPanel')"/> ... здесь собственно по action я создаю объект и отправляю его в контекст страницы, reRender="reRenderList" - это список компонентов самой страницы, которые необходимо перерисовать (в модальное окно передается через <ui:param name="reRenderList" value="prmObject,..."/>) и onclick закрывает модальное окно ... в странице по Getу одного из компонентов я вытаскиваю объект из контекста и присваиваю его свойству в бине страницы ... в итоге после закрытия модального окна страница не перерисовывается ... пробовал следующее ... на странице есть отдельная кнопка рефреш ... после ее нажатие все окэ ... вот такая ситуация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 14:36:52 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
oncomplete=" modalPanel.hide()" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 15:23:36 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
... попробовал = не помогло. Такое чувство что страница раньше ререндится, нежели в свойстве бина устанавливается новый объект. Прям какой то заколдованный круг. После закрытия модального окна по отдельности перерисовываю компоненты страницы и вижу новые данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 16:13:54 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
код в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 16:23:17 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
модальная форма: <ui:composition xmlns=" http://www.w3.org/1999/xhtml" xmlns:s=" http://jboss.com/products/seam/taglib" xmlns:ui=" http://java.sun.com/jsf/facelets" xmlns:f=" http://java.sun.com/jsf/core" xmlns:h=" http://java.sun.com/jsf/html" xmlns:c=" http://java.sun.com/jstl/core" xmlns:rich=" http://richfaces.org/rich" xmlns:a4j=" http://richfaces.org/a4j" xmlns:o=" http://openfaces.org/"> <rich:modalPanel id="tplSearchPanel" minHeight="200" minWidth="400" height="510" width="500"> <!-- <a4j:support event="onhide" reRender="reRenderList" /> --> <f:facet name="controls"> <h:graphicImage value="/commondata/img/close.png" style="cursor:pointer" onclick="Richfaces.hideModalPanel('tplSearchPanel')" /> </f:facet> <f:facet name="header"> <h:outputText id="tplSearchHeader" value="Найти" /> </f:facet> <h:form> <table> <tr><td> <rich:tabPanel style="height:472px;width:370px;" switchType="ajax"> <rich:tab id="allPanel" label="Область поиска"> <table style="width:100%;border:0px;cellspacing:0px;cellpadding:0px;"> <tr><td> <h:selectOneMenu id="listTypeObject" value="#{tplObjectSearch.selTypeObject}" style="width:100%;"> <f:selectItem itemValue="none" itemLabel="- Тип объекта -"/> <c:forEach var="parlist" items="#{tplSearchList}"> <f:selectItem itemValue="#{parlist.objectTypeID}" itemLabel="#{parlist.objectTypeName}"/> </c:forEach> <a4j:support event="onchange" actionListener="#{tplObjectSearch.changeTypeObject}" reRender="listParamObject,resultSearch" focus="valueTarget"/> </h:selectOneMenu> </td></tr> <tr><td> <h:selectOneMenu id="listParamObject" value="#{tplObjectSearch.selParamObject}" style="width:100%;"> <f:selectItem itemValue="none" itemLabel="- Параметр объекта -"/> <c:forEach var="parlist" items="#{tplObjectSearch.listParamObject}"> <f:selectItem itemValue="#{parlist[0]}" itemLabel="#{parlist[1]}"/> </c:forEach> </h:selectOneMenu> </td></tr> <tr><td> <h:outputText value="Что:" style="width:100%;"/> <h:inputText id="valueTarget" value="#{tplObjectSearch.contentSearch}" style="width:100%;" /> </td></tr> <tr><td height="10px"></td></tr> <tr><td> <rich:panel header="Результат поиска:" style="width:100%;height:320px;"> <o:dataTable id="resultSearch" value="#{tplObjectSearch.listResultObject}" var="resultObject" style="margin:0px;padding:0px;" rowKey="#{resultObject[0]}" verticalGridLines="1px solid #e0e0e0" rolloverRowStyle="background: #b6cfec;" headerVertSeparator="1px solid #a0a0a0" headerRowClass="rich-panel-header" styleClass="rich-panel"> <o:singleRowSelection rowData="#{tplObjectSearch.resultObject}"/> <o:scrolling /> <o:columnResizing/> <f:facet name="noDataMessage"> <h:outputText value="Нет данных"/> </f:facet> <o:column style="width:20px;" header="!"> </o:column> <o:column> <h:outputText value="#{resultObject[4]}" /> </o:column> </o:dataTable> </rich:panel> </td></tr> </table> </rich:tab> <rich:tab id="detailPanel" label="Настройки (по умолчанию)"> <table> <tr><td> <h:outputText value="В границах зоны ответственности: "/> <h:selectBooleanCheckbox value="#{tplObjectSearch.insideRZ}"/> </td></tr> <tr><td height="6px"></td></tr> <tr><td> <h:outputText value="Статус объекта: "/> <h:selectOneMenu value="#{tplObjectSearch.selStatusObject}"> <f:selectItem itemValue="0" itemLabel="Вновь введённый"/> <f:selectItem itemValue="1" itemLabel="Действующий"/> <f:selectItem itemValue="3" itemLabel="Удаленный"/> </h:selectOneMenu> </td></tr> </table> </rich:tab> </rich:tabPanel> </td> <td> <table> <tr height="16px"> <td><a4j:commandButton value="Закрыть" style="width:100px" title="Закрыть диалог поиска" oncomplete="Richfaces.hideModalPanel('tplSearchPanel')"/></td> </tr> <tr height="25px"/> <tr> <td><a4j:commandButton value="Найти" style="width:100px" title="Запустить процедуру поиска" actionListener="#{tplObjectSearch.lookForObject}" reRender="resultSearch"/></td> </tr> <tr> <td><a4j:commandButton value="Перейти" style="width:100px" title="Выбрать объект" actionListener="#{tplObjectSearch.movedToObject}" reRender="reRenderList" oncomplete="Richfaces.hideModalPanel('tplSearchPanel')"/></td> </tr> <tr height="300px"/> </table> </td></tr> </table> </h:form> </rich:modalPanel> </ui:composition> ...красным цветом выделено закрытие модальной формы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 16:30:43 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
бин модальной формы: package org.krona.topology.bean; import java.math.BigDecimal; import java.util.LinkedList; import java.util.List; import javax.persistence.EntityManager; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.contexts.Contexts; import org.kronacommon.app.bean.CommonUserData; import org.kronacommon.object.CommonObjectData; import org.kronacommon.object.ObjectData; @Scope(ScopeType.CONVERSATION) @Name("tplObjectSearch") public class TplObjectSearchBeen { @In protected EntityManager entityManager; @In(create = true) protected CommonUserData kronaUserData; //---------------------------------------------------------------------------------------------- //Что (контент поиска) public String contentSearch; public String getContentSearch() { return this.contentSearch; } public void setContentSearch(String contentSearch) { this.contentSearch = contentSearch; } // ---------------------------------------------------------------------------------------------- //Область поиска: //- Тип объекта - private String selTypeObject = "none"; public String getSelTypeObject() { return this.selTypeObject; } public void setSelTypeObject(String selTypeObject) { this.selTypeObject = selTypeObject; } public void changeTypeObject(){ setSelParamObject("none"); setListResultObject(null); setListParamObject(null); if (!selTypeObject.equalsIgnoreCase("none")) setSelParamObject("-2"); } //- Параметр объекта - private String selParamObject = "none"; public String getSelParamObject() { return this.selParamObject; } public void setSelParamObject(String selParamObject) { this.selParamObject = selParamObject; } //Списоок параметров объекта public List<Object[]> listParamObject; public List<Object[]> getListParamObject() { if(!selTypeObject.equalsIgnoreCase("none")&& (this.listParamObject==null || this.listParamObject.isEmpty())){ System.out.println("========== getListParamObject() WORK =========="); System.out.println("1.selTypeObject=:"+selTypeObject); this.listParamObject = new LinkedList<Object[]>(); @SuppressWarnings("unchecked") List<BigDecimal> objTypeList = entityManager .createNativeQuery("SELECT OBJECTTYPE_ID FROM MT$_OBJECTTYPE START WITH OBJECTTYPE_ID=:prm "+ "CONNECT BY NOCYCLE PRIOR OBJECTTYPE_PARENT=OBJECTTYPE_ID") .setParameter("prm", selTypeObject).getResultList(); if(objTypeList!=null && !objTypeList.isEmpty()){ for (BigDecimal objTypeVal : objTypeList) { //System.out.println("getListParamObject().((BigDecimal)objTypeVal[0]).toString()=:"+ objTypeVal.toString()); @SuppressWarnings("unchecked") List<Object[]> prmList = entityManager .createNativeQuery("SELECT PARAM_ID, PARAM_NAME FROM MT$_OBJECTPARAM WHERE PARAMOBJTYPE_ID=:prm") .setParameter("prm", objTypeVal).getResultList(); if(prmList!=null && !prmList.isEmpty()){ for (Object[] prmVal: prmList) { //System.out.println("getListParamObject().prmVal.length)=:"+prmVal.length); this.listParamObject.add(prmVal); } } } } } return this.listParamObject; } public void setListParamObject(List<Object[]> listParamObject) { this.listParamObject = listParamObject; } // ---------------------------------------------------------------------------------------------- //Список искомых объектов private List<Object> listResultObject; public List<Object> getListResultObject() { return this.listResultObject; } public void setListResultObject(List<Object> listResultObject) { this.listResultObject = listResultObject; } //Текущий объект из списка результатов private Object[] resultObject; public Object[] getResultObject() { return this.resultObject; } public void setResultObject(Object[] resultObject) { this.resultObject = resultObject; } public Object changeResultObject() { return null; } // Настройки (по умолчанию) // В границе зоны ответственности private boolean insideRZ=true; public boolean isInsideRZ() { return this.insideRZ; } public void setInsideRZ(boolean insideRZ) { this.insideRZ = insideRZ; } //Статус объекта private String selStatusObject="1"; public String getSelStatusObject() { return this.selStatusObject; } public void setSelStatusObject(String selStatusObject) { this.selStatusObject = selStatusObject; } //Процедура 'Найти' public void lookForObject(){ // Провести проверку параметров !!! System.out.println(" === lookForObject.selTypeObject=:"+selTypeObject); System.out.println(" === lookForObject.selParamObject=:"+selParamObject); System.out.println(" === lookForObject.insideRZ=:"+insideRZ); System.out.println(" === lookForObject.selStatusObject=:"+selStatusObject); System.out.println(" === lookForObject.contentSearch=:"+contentSearch); System.out.println(" === lookForObject.kronaUserData.getSubjectID()=:"+kronaUserData.getSubjectID()); String QUERY_text = "SELECT OL.* FROM DT$_OBJECTLIST OL LEFT JOIN DT$_LINKDATA1000 LD ON OL.OBJECT_ID=LD.DEST_OBJECTID "+ "LEFT JOIN DT$_OBJECTSTATUS SO ON OL.OBJECT_ID=SO.OBJECT_ID "+ "WHERE OL.OBJECTTYPE_ID="+selTypeObject+calcContentSearch()+ "AND LD.LINKTYPE_ID=993 AND LD.LINKDATA_STATUS=1 "+ "AND LD.LINKDATA_TIMELAYER = (SELECT MAX (LD.LINKDATA_TIMELAYER) FROM DT$_LINKDATA1000 T WHERE T.DEST_OBJECTID = OL.OBJECT_ID) "+ "AND LD.SRC_OBJECTID"+(insideRZ ? "=" : "!=")+kronaUserData.getSubjectID()+ " AND SO.OBJECT_STATUS="+selStatusObject+ " AND SO.OBJECT_TIMELAYER = (SELECT MAX (SO.OBJECT_TIMELAYER) FROM DT$_OBJECTSTATUS T WHERE T.OBJECT_ID = OL.OBJECT_ID)"; //System.out.println(" === lookForObject.QUERY_text=:"+QUERY_text); this.listResultObject = entityManager.createNativeQuery(QUERY_text).getResultList(); System.out.println(" === lookForObject.listResultObject.size()=:"+this.listResultObject.size()); } private String calcContentSearch(){ long id_param = Long.valueOf(selParamObject); //.parseLong(selParamObject); if(id_param<0){ return " AND LOWER(OL."+(id_param == -2 ? "OBJECT_NAME" : "OBJECT_MRID")+") LIKE LOWER('%"+contentSearch+"%') "; }else{ //pro tempore return " AND LOWER(OL.OBJECT_NAME) LIKE LOWER('%"+contentSearch+"%') "; } } //Процедура 'Перейти' public void movedToObject(){ //System.out.println(" ========== movedToObject.resultObject[0]=:"+resultObject[0]); //System.out.println(" ========== movedToObject.resultObject[4]=:"+resultObject[4]); CommonObjectData cod = new ObjectData(); cod.setObjectID(((BigDecimal) resultObject[0]).longValue()); cod.setObjectGroupID(((BigDecimal) resultObject[1]).longValue()); cod.setObjectTypeID(((BigDecimal) resultObject[2]).longValue()); cod.setObjectMrid((resultObject[3]).toString()); cod.setObjectName((resultObject[4]).toString()); //cod.setObjectTypeName(objectTypeName); //cod.setObjectTypeXmlTag(objectTypeXmlTag); //cod.setObjectTimeLayer(timeLayer); cod.setObjectStatus(Integer.valueOf(selStatusObject)); Contexts.getPageContext().set("searchCommObjData",cod); } } ... красным выделен акшионлистенер кнопки перехода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 16:32:49 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
фрагмент бина страницы по обработке закрытия модального окна: // Обработка результатов поиска // надо поставить try ... catch public boolean getResultSearchTNode() { // if (calculateListOverFlow().equals(NODE_TOPOLOGY_PANEL) // && rootFilterNode.getFoundObject() != null) { if (calculateListOverFlow().equals(NODE_TOPOLOGY_PANEL)) { System.out.println(" BEGINING = PROCESSING SEARCH RESULT for NODE_TOPOLOGY_PANEL"); CommonObjectData cod = (CommonObjectData)Contexts.getPageContext().get("searchCommObjData"); if(cod!=null){ Contexts.getPageContext().remove("searchCommObjData"); System.out.println("== getResultSearchTNode.cod.getObjectID=:"+cod.getObjectID()); System.out.println("== getResultSearchTNode.cod.getObjectGroupID=:"+cod.getObjectGroupID()); System.out.println("== getResultSearchTNode.cod.getObjectTypeID=:"+cod.getObjectTypeID()); System.out.println("== getResultSearchTNode.cod.getObjectMrid=:"+cod.getObjectMrid()); System.out.println("== getResultSearchTNode.cod.getObjectName=:"+cod.getObjectName()); System.out.println("== getResultSearchTNode.cod.getObjectTypeName=:"+cod.getObjectTypeName()); System.out.println("== getResultSearchTNode.cod.getObjectTypeXmlTag=:"+cod.getObjectTypeXmlTag()); System.out.println("== getResultSearchTNode.cod.getObjectTimeLayer=:"+cod.getObjectTimeLayer()); System.out.println("== getResultSearchTNode.cod.getObjectStatus=:"+cod.getObjectStatus()); // selectedPowerObject = rootFilterNode.getFoundObject(); selectedPowerObject = cod; objectDataEdit.setSelectedObject(selectedPowerObject); initListOverFlow(); settingDataOverFlow(); initPathTopologyNode(); // rootFilterNode.setFoundObject(null); System.out.println(" ENDING = PROCESSING SEARCH RESULT for NODE_TOPOLOGY_PANEL"); } } return true; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 16:35:04 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
... ну и собственно сама страница: <!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:s=" http://jboss.com/products/seam/taglib" xmlns:ui=" http://java.sun.com/jsf/facelets" xmlns:f=" http://java.sun.com/jsf/core" xmlns:h=" http://java.sun.com/jsf/html" xmlns:c=" http://java.sun.com/jstl/core" xmlns:rich=" http://richfaces.org/rich" xmlns:a4j=" http://richfaces.org/a4j" xmlns:o=" http://openfaces.org/" template="/commondata/layout/template.xhtml"> <ui:define name="body"> <rich:dragIndicator id="pathTopology"/> <h:form id="objectTPL"> <h1>#{tplObject.contextTitle} <a4j:status id="statusFormTopology" startText=" ... данные в процессе обработки ..."/> </h1> <!-- Командные кнопки Перетоков --> <a4j:jsFunction name="addOverFlow" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.addOverFlow}" reRender="#{tplObject.calculateListOverFlow()}"/> <a4j:jsFunction name="delOverFlow" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.delOverFlow}" reRender="#{tplObject.calculateListOverFlow()},pathTopologyNode"/> <a4j:jsFunction name="saveOverFlowList" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.saveOverFlowList}" reRender="#{tplObject.calculateListOverFlow()},pathTopologyNode"/> <!-- Командные кнопки Узла топологии --> <a4j:jsFunction name="addPwrObject" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.addPwrObject}" reRender="utilsBtnTopologyNode,nodeTopologyPanel,btnTopologyNode,pathTopologyNode, positivePwrFlow,reversivePwrFlow,negativePwrFlow,btnOverFlowList,btnNegativeFlowList"/> <a4j:jsFunction name="searchNodeTopology" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.searchNodeTopology}" reRender="pathTopologyNode"/> <a4j:jsFunction name="refreshListOverFlow" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.refreshListOverFlow}" reRender="prmPowerObject,positivePwrFlow,reversivePwrFlow,negativePwrFlow,pathTopologyNode"/> <a4j:jsFunction name="delPwrObject" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.delPwrObject}" reRender="prmPowerObject,positivePwrFlow,reversivePwrFlow,negativePwrFlow,pathTopologyNode"/> <!-- <rich:progressBar id="overFlowLoadProgress" value="#{tplObject.curProgressVal}" enabled="#{tplObject.pollingProgressVal}" maxValue="#{tplObject.maxProgressVal}"/> --> <o:borderLayoutPanel rendered="#{tplObject.resultSearchTNode}" style="height:600px;width:100%;border:1px solid gray;"><!-- Блок перетоков положительной\реверсивной направленности --> <!-- Note: rich:panelBarItem not supported ajax switchType !!! --> <o:sidePanel size="350px" resizable="true" collapsible="true"> <table style="height:100%;width:100%;border:0px;cellspacing:0px;cellpadding:0px;"> <tr style="height:20px;width:100%;"><td> <h:panelGroup id="btnOverFlowList"> <table style="height:100%;width:100%;border:0px;cellspacing:0px;cellpadding:0px;"><tr> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selPanelCurrentflow}" action="#{tplObject.conditionalTestAddOverFlow}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) addOverFlow();" image="#{tplObject.editable ? '/img/context/32/add_off.png' : '/commondata/img/button/32/add.png'}" type="image" title="Добавить переток"> </a4j:commandButton></td> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selPanelCurrentflow}" action="#{tplObject.conditionalTestDelOverFlow}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {if(confirm('Вы действительно хотите удалить ПЕРЕТОК?')!=false) delOverFlow();}" image="#{tplObject.editable ? '/img/context/32/delete_off.png' : '/commondata/img/button/32/delete.png'}" type="image" title="Удалить переток"> </a4j:commandButton></td> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selPanelCurrentflow}" action="#{tplObject.conditionalTestOverFlow}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {saveOverFlowList();} else{if(data[0]==3) {if(confirm(data[1])!=false) saveOverFlowList();}}" image="#{tplObject.editable ? '/img/context/32/save_off.png' : '/commondata/img/button/32/save.png'}" type="image" title="Сохранить изменения по массиву перетоков"> </a4j:commandButton></td> <td style="width:100%;"/> </tr></table> </h:panelGroup> </td></tr> <tr valign="top"><td> <!-- Положительный переток --> <rich:panelBar id="commPanelCurrentflow" selectedPanel="#{tplObject.selectPanelCurrentflow}"> <rich:panelBarItem id="#{tplObject.positivePanelCurrentflow}" label="#{tplObject.descPositivePanelOverflow}" style="margin:0px;padding:0px;" headerStyle="white-space:nowrap"> <a4j:support actionListener="#{tplObject.selPositivePanelCurrentflow}" reRender="#{tplObject.calculateListOverFlow()}" event="onenter" ajaxSingle="true" ignoreDupResponses="true"/> <o:dataTable id="positivePwrFlow" value="#{tplObject.positiveFlowList}" var="positiveFlow" style="height:510px;width:100%;margin:0px;padding:0px;" rowKey="#{positiveFlow.rowDataKey}" verticalGridLines="1px solid #e0e0e0" rolloverRowStyle="background: #b6cfec;" headerVertSeparator="1px solid #a0a0a0" headerRowClass="rich-panel-header" styleClass="rich-panel"> <o:singleRowSelection rowData="#{tplObject.selectPositiveFlow}" action="#{tplObject.changeOverFlow}"/> <o:scrolling /> <o:columnResizing/> <f:facet name="noDataMessage"> <h:outputText value="Присоединения отсутствуют"/> </f:facet> <o:column style="width:20px;" header="!"> <h:graphicImage url="#{positiveFlow.availabilityObject ? '/commondata/img/rdf/testok.png' : '/commondata/img/rdf/testerror.png'}" rendered="#{positiveFlow.change}" title="Индикотор наличия изменений"/> </o:column> <o:column style="width:40px;"> <a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selPositivePanelCurrentflow}" action="#{tplObject.searchObjectTPL}" image="/commondata/img/button/32/find.png" type="image" title="Поиск электросетевого объекта-присоединения" style="margin:2px;padding:0px;"/> </o:column> <o:column style="width:100%;" header="Присоединение"> <a4j:outputPanel ajaxRendered="true" style="margin:0px;padding:0px;"> <rich:dragSupport dragIndicator="pathTopology" dragType="commObjPositive" dragValue="#{positiveFlow.flowPowerObject}" disableDefault="true"> <rich:dndParam type="drag" name="label" value="#{positiveFlow.flowPowerObject != null ? positiveFlow.flowPowerObject.objectName : 'new drag value'}" /> </rich:dragSupport> <h:outputText value="#{positiveFlow.flowPowerObject.objectName}" /> </a4j:outputPanel> </o:column> <o:column style="width:40px;"> <a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.connectionPointDesc}" image="/img/context/32/connPoint.png" type="image" title="Точка технологического присоединения" style="margin:2px;padding:0px;"/> </o:column> </o:dataTable> </rich:panelBarItem> <!-- Реверсивный переток --> <rich:panelBarItem id="#{tplObject.reversivePanelCurrentflow}" label="#{tplObject.descReversivePanelOverflow}" style="margin:0px;padding:0px;" headerStyle="white-space:nowrap"> <a4j:support actionListener="#{tplObject.selReversivePanelCurrentflow}" reRender="#{tplObject.calculateListOverFlow()}" event="onenter" ajaxSingle="true" ignoreDupResponses="true"/> <o:dataTable id="reversivePwrFlow" value="#{tplObject.reversiveFlowList}" var="reversiveFlow" style="height:510px;width:100%;margin:0px;padding:0px;" rowKey="#{reversiveFlow.rowDataKey}" verticalGridLines="1px solid #e0e0e0" rolloverRowStyle="background: #b6cfec;" headerVertSeparator="1px solid #a0a0a0" headerRowClass="rich-panel-header" styleClass="rich-panel"> <o:singleRowSelection rowData="#{tplObject.selectReversiveFlow}" action="#{tplObject.changeOverFlow}"/> <o:scrolling /> <o:columnResizing /> <f:facet name="noDataMessage"> <h:outputText value="Присоединения отсутствуют"/> </f:facet> <o:column style="width:20px;" header="!"> <h:graphicImage url="#{reversiveFlow.availabilityObject ? '/commondata/img/rdf/testok.png' : '/commondata/img/rdf/testerror.png'}" rendered="#{reversiveFlow.change}" title="Индикотор наличия изменений"/> </o:column> <o:column style="width:40px;"> <a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selReversivePanelCurrentflow}" action="#{tplObject.searchObjectTPL}" image="/commondata/img/button/32/find.png" type="image" style="margin:2px;padding:0px;" title="Поиск электросетевого объекта-присоединения"/> </o:column> <o:column style="width:100%;" header="Присоединение"> <a4j:outputPanel ajaxRendered="true" style="margin:0px;padding:0px;"> <rich:dragSupport dragIndicator="pathTopology" dragType="commObjReversive" dragValue="#{reversiveFlow.flowPowerObject}" disableDefault="true"> <rich:dndParam type="drag" name="label" value="#{reversiveFlow.flowPowerObject != null ? reversiveFlow.flowPowerObject.objectName : 'new drag value'}" /> </rich:dragSupport> <h:outputText value="#{reversiveFlow.flowPowerObject.objectName}" /> </a4j:outputPanel> </o:column> <o:column style="width:40px;"> <a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.connectionPointDesc}" image="/commondata/img/button/32/refresh.png" type="image" title="Точка технологического присоединения" style="margin:2px;padding:0px;"/> </o:column> </o:dataTable> </rich:panelBarItem> </rich:panelBar> </td></tr> </table> </o:sidePanel> <!-- Узел топологии --> <o:sidePanel size="600px" resizable="true" collapsible="false"> <h:panelGroup id="utilsBtnTopologyNode"> <table style="height:20px;width:100%;border:0px;cellspacing:0px;cellpadding:0px;"> <tr> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selNodeTopologyPanel}" action="#{tplObject.conditionalTestChangePWR}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {searchNodeTopology();} else{if(data[0]==4) {if(confirm(data[1])!=false) searchNodeTopology();}}" image="/commondata/img/button/32/find.png" type="image" title="Поиск узла топологии" style="margin:2px;padding:0px;"/></td> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selNodeTopologyPanel}" action="#{tplObject.conditionalTestChangePWR()}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {refreshListOverFlow();} else{if(data[0]==4) {if(confirm(data[1])!=false) refreshListOverFlow();}}" image="/commondata/img/button/32/refreshb.png" type="image" title="Перестроить массивы перетоков" style="margin:2px;padding:0px;"/></td> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.mnemoSchemeDesc}" image="/commondata/img/button/32/move.png" type="image" title="Мнемосхема топологии" style="margin:2px;padding:0px;"/></td> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selNodeTopologyPanel}" action="#{tplObject.conditionalTestChangePWR}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {Richfaces.showModalPanel('tplSearchPanel');} else{if(data[0]==4) {if(confirm(data[1])!=false) Richfaces.showModalPanel('tplSearchPanel');}}" image="/commondata/img/button/32/find.png" type="image" title="Поиск узла топологии" style="margin:2px;padding:0px;"/></td> <!-- oncomplete="javascript:Richfaces.showModalPanel('tplSearchPanel');"--> <td style="width:100%;"/> </tr> </table> </h:panelGroup> <table style="width:100%;border:0px;cellspacing:0px;cellpadding:0px;"> <tr valign="top"><td> <h:panelGroup> <rich:panel id="nodeTopologyPanel" header="#{tplObject.descHeaderBloc}" align="center"> <rich:dropSupport acceptedTypes="commObjPositive,commObjReversive,commObjNegative,commObjPath" dropListener="#{tplObject.dropSelectPowerObject}" reRender="nodeTopologyPanel,positivePwrFlow,reversivePwrFlow,negativePwrFlow,pathTopologyNode"/> <h:panelGroup id="grTypePwrObject"> <h:selectOneMenu id="listTypePwrObject" value="#{tplObject.selTypePwrObject}" rendered="#{tplObject.editStatus==1}"> <f:selectItem itemValue="none" itemLabel="- Выбор типа электросетевого объекта -"/> <c:forEach var="parlist" items="#{tplObject.listTypePwrObject}"> <f:selectItem itemValue="#{parlist.objectTypeXmlTag}" itemLabel="#{parlist.objectTypeName}"/> </c:forEach> <a4j:support event="onchange" actionListener="#{tplObject.addSelPwrObject}" reRender="prmPowerObject"/> </h:selectOneMenu> </h:panelGroup> <h:panelGroup id="prmPowerObject"> <ui:include src="/commondata/param/objectParamEdit.xhtml"/> </h:panelGroup> </rich:panel> </h:panelGroup> <h:panelGroup id="btnTopologyNode"> <table style="width:100%;border:0px;cellspacing:0px;cellpadding:0px;"> <tr valign="top"> <td><a4j:commandButton value="Добавить" disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.conditionalTestChangePWR}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {addPwrObject();} else{if(data[0]==4) {if(confirm(data[1])!=false) addPwrObject();}}" title="Добавить электросетевой объект"/></td> <td><a4j:commandButton value="Редактировать" disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.editPwrObject}" limitToList="true" reRender="utilsBtnTopologyNode,prmPowerObject,btnTopologyNode,btnOverFlowList,btnNegativeFlowList" title="Редактировать значения параметров электросетевого объекта"/></td> <td><a4j:commandButton value="Удалить" disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.conditionalTestDelPWR}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {if(confirm('Вы действительно хотите удалить УЗЕЛ ТОПОЛОГИИ?')!=false) delPwrObject();}" title="Удалить электросетевой объект"/></td> <td style="width: 100%;"/> <td><a4j:commandButton value="Сохранить" disabled="#{!tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.savePwrObject}" reRender="utilsBtnTopologyNode,nodeTopologyPanel,btnTopologyNode,btnOverFlowList,btnNegativeFlowList,pathTopologyNode" title="Сохранить значения параметров электросетевого объекта"/></td> <td><a4j:commandButton value="Отменить" disabled="#{!tplObject.editable}" actionListener="#{tplObject.cancelPwrObject}" immediate="true" ajaxSingle="true" ignoreDupResponses="true" reRender="utilsBtnTopologyNode,nodeTopologyPanel,btnTopologyNode,btnOverFlowList,btnNegativeFlowList, positivePwrFlow,reversivePwrFlow,negativePwrFlow,pathTopologyNode" title="Отменить корректрировки значений параметров электросетевого объекта"/></td> </tr></table> </h:panelGroup> <h:panelGroup id="pathTopologyNode"> <o:dataTable value="#{tplObject.pathTopologyNode}" var="node" style="height:170px;width:100%;margin:0px;padding:0px;"> <o:scrolling /> <o:singleRowSelection rowData="#{tplObject.selectTopologyNode}" action="#{tplObject.changeOverFlow}"/> <f:facet name="noDataMessage"> <h:outputText value="Навигатор УЗЛА ТОПОЛОГИИ"/> </f:facet> <o:column style="width:20px;" header="*"> <h:graphicImage style="height:16px;width:16px;margin:0px;padding:0px;" url="#{node.objectTypeIcon}" title="#{node.objectTypeName}" /> </o:column> <o:column style="width:100%;align:center"> <a4j:outputPanel ajaxRendered="true" style="margin:0px;padding:0px;"> <rich:dragSupport dragIndicator="pathTopology" dragType="commObjPath" dragValue="#{node}" disableDefault="true"> <rich:dndParam type="drag" name="label" value="#{node != null ? node.objectName : 'new drag value'}" /> </rich:dragSupport> <h:outputText value="#{node.objectName}" /> </a4j:outputPanel> </o:column> </o:dataTable> </h:panelGroup> </td></tr> </table> </o:sidePanel> <!-- Отрицательный переток --> <table style="height:100%;width:100%;border:0px;cellspacing:0px;cellpadding:0px;"> <tr style="height:20px;width:100%;"><td> <h:panelGroup id="btnNegativeFlowList"> <table style="height:100%;width:100%;border:0px;cellspacing:0px;cellpadding:0px;"><tr> <td style="width:100%;"/> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selNegativePanelOverflow}" action="#{tplObject.conditionalTestAddOverFlow}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) addOverFlow();" image="#{tplObject.editable ? '/img/context/32/add_off.png' : '/commondata/img/button/32/add.png'}" type="image" title="Добавить переток"> </a4j:commandButton></td> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selNegativePanelOverflow}" action="#{tplObject.conditionalTestDelOverFlow}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {if(confirm('Вы действительно хотите удалить ПЕРЕТОК?')!=false) delOverFlow();}" image="#{tplObject.editable ? '/img/context/32/delete_off.png' : '/commondata/img/button/32/delete.png'}" type="image" title="Удалить переток"> </a4j:commandButton></td> <td><a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selNegativePanelOverflow}" action="#{tplObject.conditionalTestOverFlow}" data="#{tplObject.flagTestCurrentFlow}" oncomplete="if(data[0]==null) {saveOverFlowList();} else{if(data[0]==3) {if(confirm(data[1])!=false) saveOverFlowList();}}" image="#{tplObject.editable ? '/img/context/32/save_off.png' : '/commondata/img/button/32/save.png'}" type="image" title="Сохранить изменения по массиву перетоков"> </a4j:commandButton></td> </tr></table> </h:panelGroup> </td></tr> <tr valign="top" style="height:100%;"><td> <rich:panel id="negativePanelOverflow" header="#{tplObject.descNegativePanelOverflow}" align="center"> <o:dataTable id="negativePwrFlow" value="#{tplObject.negativeFlowList}" var="negativeFlow" style="height:530px;width:100%;margin:0px;padding:0px;" rowKey="#{negativeFlow.rowDataKey}" verticalGridLines="1px solid #e0e0e0" rolloverRowStyle="background: #b6cfec;" headerVertSeparator="1px solid #a0a0a0" headerRowClass="rich-panel-header" styleClass="rich-panel"> <o:singleRowSelection rowData="#{tplObject.selectNegativeFlow}" action="#{tplObject.changeOverFlow}"/> <o:scrolling /> <o:columnResizing /> <f:facet name="noDataMessage"> <h:outputText value="Присоединения отсутствуют"/> </f:facet> <o:column style="width:40px;"> <a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" action="#{tplObject.connectionPointDesc}" image="/img/context/32/connPoint.png" type="image" title="Точка технологического присоединения" style="margin:2px;padding:0px;"/> </o:column> <o:column style="width:100%;" header="Присоединение"> <a4j:outputPanel ajaxRendered="true" style="margin:0px;padding:0px;"> <rich:dragSupport dragIndicator="pathTopology" dragType="commObjNegative" dragValue="#{negativeFlow.flowPowerObject}" disableDefault="true"> <rich:dndParam type="drag" name="label" value="#{negativeFlow.flowPowerObject != null ? negativeFlow.flowPowerObject.objectName : 'new drag value'}" /> </rich:dragSupport> <h:outputText value="#{negativeFlow.flowPowerObject.objectName}" /> </a4j:outputPanel> </o:column> <o:column style="width:40px;"> <a4j:commandButton disabled="#{tplObject.editable}" ajaxSingle="true" ignoreDupResponses="true" actionListener="#{tplObject.selNegativePanelOverflow}" action="#{tplObject.searchObjectTPL}" image="/commondata/img/button/32/find.png" type="image" title="Поиск электросетевого объекта-присоединения" style="margin:2px;padding:0px;"/> </o:column> <o:column style="width:20px;" header="!"> <h:graphicImage url="#{negativeFlow.availabilityObject ? '/commondata/img/rdf/testok.png' : '/commondata/img/rdf/testerror.png'}" rendered="#{negativeFlow.change}" title="Индикотор наличия изменений"/> </o:column> </o:dataTable> </rich:panel> </td></tr> </table> </o:borderLayoutPanel> </h:form> <ui:include src="/topology/tplSearch.xhtml"> <ui:param name="tplSearchList" value="#{tplObject.listTypePwrObject}"/> <ui:param name="reRenderList" value="objectTPL"/> </ui:include> <ui:include src="/commondata/param/paramEditPanel.xhtml" /> </ui:define> </ui:composition> ... красным веделены обработка закрытия модальной формы, а точнее переход на страницу и формирование объекта из контекста страницы и внизу инклуд модального окна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 16:39:10 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
reRender="reRenderList" <ui:param name="reRenderList" value="objectTPL"/> И что вы тут переисовываете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 17:25:59 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
... в последнем релизе пытался всю страницу перерисовать. А так был список из компонентов страницы, которые зависят от смены искомого объекта: prmPowerObject,positivePwrFlow,reversivePwrFlow,negativePwrFlow,pathTopologyNode ... сознаю что всю страницу это уж через чур ... пробовал от безвыходности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2012, 18:32:38 |
|
||
|
Как рендерить форму после закрытия rich:modalPanel
|
|||
|---|---|---|---|
|
#18+
Всем Доброго времени суток! Задача решена и ларчик открылся довольно таки просто. Дело в том, что вокруг решения я ходил круг за кругом. А загвоздка была в следующем. Из основной фомры (страницы) в модальное окно, я передал id визуальных компонентов для последующей перерисовки (при закрытии модального окна) в виде строки: <ui:param name="reRenderList" value="prmPowerObject,positivePwrFlow,reversivePwrFlow,negativePwrFlow,pathTopologyNode"/> здесь все верно! А вот рендерить я их пытался именно в том исконном виде, в котором и передал: ... reRender="reRenderList" что по сути и было моей ошибкой. Все разрешилось, когда я использовал конструкцию: ... reRender="#{reRenderList}" По факту отработали все гэты визуальных компонентов основной страницы и она преобразилась в требуемый вид. ВСЕМ спасибо кто помог мне решить очередную задачу и получить неоценимый опыт при общении !!! Ученье свет, а не ученье - тьма ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2012, 10:35:03 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37967444&tid=2130910]: |
0ms |
get settings: |
17ms |
get forum list: |
22ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
93ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
3ms |
| others: | 332ms |
| total: | 580ms |

| 0 / 0 |
