2017-02-10 1 views
0

J'ai un site avec GWT, SmartGwt et Sencha GXT. Récemment, avec les navigateurs mis à jour (IE, Chrome, Opera, Firefox) quelques boutons sur notre site ne fonctionnent pas.Soumission de formulaire annulée parce que le formulaire n'est pas connecté sur GWT

J'ai un onglet avec une grille comme ceci:

Tab 
    |_Grid 
     |_Rows with buttons(this buttons don't work now) 

dans le regard est comme le code ceci:

VisualizadorCartasTab.java

import ... 

public class VisualizadorCartasTab extends Tab { 

private final Canvas     panelTab; 
private final VLayout     layoutGen; 
private GrillaRepositorioXML   grillaRepositorio; 
private SelectItem      cmbPeriodo; 
private SelectItem      cmbNegocio; 
private SelectItem      cmbProceso; 
private IButton       btnBuscar; 
private IButton       btnLimpiar; 
private IButton       btnEliminar; 
private IButton       btnVistoBueno; 
private IButton       btnReprocesar; 
private IButton       btnBuscarrut; 
private TextItem      textItemRutContribuyente; 
private VisualizadorCartasFacadeAsync servicio; 
private DcRepositorioXmlTo    toTempo; 
private CheckboxItem     verXml; 
private SectionStack     secciones; 
private SectionStackSection    seccionBusqueda; 
private VLayout       vlPrincipal; 

... 


public VisualizadorCartasTab(String titulo, final ParametersConfigLetter configLetter) { 

    super(titulo);  

    panelTab   = new Canvas(); 
    layoutGen   = new VLayout(); 
    grillaRepositorio = new GrillaRepositorioXML(); 
    vlPrincipal   = new VLayout(); 

    vlPrincipal.addMember(grillaRepositorio.asWidget());   
    panelTab.addChild(vlPrincipal);  
    hanlders(configLetter); 
    ... 

} 

public void dibujarPantalla() { 
    grillaRepositorio.getLoader().load(); 
    btnLimpiar.setDisabled(false); 
    btnEliminar.setDisabled(false);  
    btnBuscarrut.setDisabled(false); 

} 

private void hanlders(final ParametersConfigLetter configLetter) { 

    .... 

    btnBuscar.addClickHandler(new ClickHandler() { 

      @Override 
      public void onClick(ClickEvent event) { 

         @Override 
         public void onFailure(Throwable caught) { 

         } 

         @Override 
         public void onSuccess(Boolean result) { 

          if(result){ 
           repoXML = new DcRepositorioXmlTo(); 
           repoXML.setRepo_proceso(String.valueOf(cmbProceso.getValue())); 
           repoXML.setProc_periodo(String.valueOf(cmbPeriodo.getValue())); 
           repoXML.setProc_negocio(String.valueOf(cmbNegocio.getValue())); 
           grillaRepositorio.setRepositorio(repoXML);        
           dibujarPantalla(); 
          }else{ 
           SC.say("msg"); 
          } 
         } 

        }); 
       }   
      } 
     }); 
     ... 
} 

}

GrillaRepositorioXML.java

public class GrillaRepositorioXML implements IsWidget{ 

private FramedPanel      mainPnl; 
private Grid<DcRepositorioXmlTo>  gridRepositorio;  
private static final RepositorioXMLTo nomProps = GWT.create(RepositorioXMLTo.class); 
private AsyncCallback     callbackGrid; 
private PagingLoader<PagingLoadConfig, PagingLoadResult<DcRepositorioXmlTo>> loader; 
private PagingToolBar     pagingToolBar; 
private VisualizadorCartasFacadeAsync visualizadorCartasFacade = ServiceLocator.getVisualizadorCartasFacade(); 
private DcRepositorioXmlTo    repositorio = new DcRepositorioXmlTo(); 
private final int      PAGE_SIZE = 50; 
private FiltersBean      filters; 
private List<DcRepositorioXmlTo>  selNomina; 
private Boolean       verXml = false; 


@Override 
public Widget asWidget() { 
    return panel(); 
} 

private Widget panel() { 

    IdentityValueProvider<DcRepositorioXmlTo> identity = new IdentityValueProvider<DcRepositorioXmlTo>(); 
    final CheckBoxSelectionModel<DcRepositorioXmlTo> selectionModel = new CheckBoxSelectionModel<DcRepositorioXmlTo>(identity); 

    RpcProxy<PagingLoadConfig, PagingLoadResult<DcRepositorioXmlTo>> proxy = new RpcProxy<PagingLoadConfig, PagingLoadResult<DcRepositorioXmlTo>>() { 

     @Override 
     public void load(PagingLoadConfig loadConfig, 
       final AsyncCallback<PagingLoadResult<DcRepositorioXmlTo>> callback) { 

      filters = new FiltersBean(); 
      filters.setLimit(loadConfig.getLimit()); 
      filters.setOffset(loadConfig.getOffset()); 

      callbackGrid = new AsyncCallback<PagingLoadResult<DcRepositorioXmlTo>>() { 
       @Override 
       public void onSuccess(PagingLoadResult<DcRepositorioXmlTo> result) { 
        pagingToolBar.unmask(); 
        if(result.getData().isEmpty()){ 
         SC.say("No hay resultados para la busqueda"); 
        }              
        callback.onSuccess(result);            
       } 

       @Override 
       public void onFailure(Throwable caught) { 
        pagingToolBar.unmask(); 
        callback.onFailure(caught); 
        SC.warn("Msg" + caught.getMessage()); 
       } 
      };   
      visualizadorCartasFacade.getRepositorioXml(loadConfig, filters, repositorio, callbackGrid); 

     } 
    }; 

    ListStore<DcRepositorioXmlTo> store = new ListStore<DcRepositorioXmlTo>(nomProps.key()); 

    loader = new PagingLoader<PagingLoadConfig, PagingLoadResult<DcRepositorioXmlTo>>(proxy); 
    loader.setRemoteSort(true); 
    loader.addLoadHandler(new LoadResultListStoreBinding<PagingLoadConfig, DcRepositorioXmlTo, PagingLoadResult<DcRepositorioXmlTo>>(store)); 

    pagingToolBar = new PagingToolBar(PAGE_SIZE); 
    pagingToolBar.setBorders(true); 
    pagingToolBar.bind(loader); 

    /** COLUMNAS **/ 
    ColumnConfig<DcRepositorioXmlTo, String> colEstado = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.estado(), 82, "ESTADO"); 
    ColumnConfig<DcRepositorioXmlTo, String> colEnvio = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.repo_tipo_envio(), 82, "TIPO ENVIO"); 
    ColumnConfig<DcRepositorioXmlTo, String> colRut = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.repo_rut(), 82, "RUT CONTRIBUYENTE"); 
    ColumnConfig<DcRepositorioXmlTo, String> colNombre = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.repo_nom_rzsoc(), 82, "NOMBRE"); 
    ColumnConfig<DcRepositorioXmlTo, String> colMonto = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.monto(), 82, "MONTO"); 
    ColumnConfig<DcRepositorioXmlTo, String> colDireccion = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.repo_direccion(), 82, "DIRECCION"); 
    ColumnConfig<DcRepositorioXmlTo, String> colComuna = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.repo_comuna(), 82, "COMUNA"); 
    ColumnConfig<DcRepositorioXmlTo, String> colUnidad = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.repo_unidad(), 82, "UNIDAD"); 

    final ColumnConfig<DcRepositorioXmlTo, String> colPdf = new ColumnConfig<DcRepositorioXmlTo, String>(nomProps.pesoPdf(), 90, "VER"); 

    final TextButtonCell button = new TextButtonCell(){ 
     @Override 
     public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) { 
      String style = "style='background-color: " + (Integer.parseInt(value) == 15 ? "red" : "white") + "'"; 
      sb.appendHtmlConstant("<button type='button' "+style+" >VER</button>"); 
     } 

    }; 

    button.setIcon(Icons.INSTANCE.pdf()); 


    button.addSelectHandler(new SelectHandler() { 
     @Override 
     public void onSelect(SelectEvent event) { 

      String carta = ""; 
      String plantilla = ""; 


      carta  = gridRepositorio.getSelectionModel().getSelectedItem().getCarta(); 
      plantilla = gridRepositorio.getSelectionModel().getSelectedItem().getPlantilla(); 
      if(verXml){ 
       dialog(carta); 
      }else{ 
       if(!carta.equalsIgnoreCase("") && !plantilla.equalsIgnoreCase("")){ 
        FormPanel fp = new FormPanel(); 
        com.google.gwt.user.client.Window.alert(GWT.getModuleBaseURL()+"generaPdf"); 
        fp.setAction(GWT.getModuleBaseURL()+"generaPdf"); 
        fp.setMethod(Method.POST); 
        fp.setEncoding(Encoding.MULTIPART); 

        Hidden xmlCarta = new Hidden(); 
        Hidden xmlPlantilla = new Hidden(); 

        xmlCarta.setName("xmlCarta"); 
        xmlCarta.setValue(carta); 

        xmlPlantilla.setName("xmlPlantilla"); 
        xmlPlantilla.setValue(plantilla); 

        VerticalLayoutContainer ct = new VerticalLayoutContainer(); 
        ct.add(xmlCarta); 
        ct.add(xmlPlantilla); 

        fp.add(ct); 
        fp.submit(); 
       }else{ 
        SC.say("No se puede generar documento PDF."); 
       } 
      } 
     } 

    }); 
    colPdf.setCell(button); 

    List<ColumnConfig<DcRepositorioXmlTo, ?>> listColumnCfg = new ArrayList<ColumnConfig<DcRepositorioXmlTo, ?>>(); 

    listColumnCfg.add(selectionModel.getColumn()); 
    listColumnCfg.add(colEstado); 
    listColumnCfg.add(colEnvio); 
    listColumnCfg.add(colRut); 
    listColumnCfg.add(colNombre); 
    listColumnCfg.add(colMonto); 
    listColumnCfg.add(colDireccion); 
    listColumnCfg.add(colComuna); 
    listColumnCfg.add(colUnidad); 
    listColumnCfg.add(colPdf); 
    /** FIN COLUMNAS */ 

    ColumnModel<DcRepositorioXmlTo> cm = new ColumnModel<DcRepositorioXmlTo>(listColumnCfg); 

    gridRepositorio = new Grid<DcRepositorioXmlTo>(store, cm);  
    gridRepositorio.setLoadMask(true); 
    gridRepositorio.setLoader(loader); 
    gridRepositorio.setColumnReordering(true); 
    gridRepositorio.setBorders(true); 
    gridRepositorio.setAllowTextSelection(true); 


    gridRepositorio.setSelectionModel(selectionModel); 
    gridRepositorio.getView().setTrackMouseOver(false); 
    gridRepositorio.getView().setColumnLines(false); 
    gridRepositorio.getView().setStripeRows(true); 
    gridRepositorio.getView().setAutoFill(true); 
    gridRepositorio.getView().setForceFit(true); 

    gridRepositorio.setColumnReordering(true); 
    gridRepositorio.setStateful(true); 


    StringFilter<DcRepositorioXmlTo> stringFilterEstado = new StringFilter<DcRepositorioXmlTo>(nomProps.estado()); 
    StringFilter<DcRepositorioXmlTo> stringFilterTipoEnvio = new StringFilter<DcRepositorioXmlTo>(nomProps.repo_tipo_envio()); 
    StringFilter<DcRepositorioXmlTo> stringFilterRut = new StringFilter<DcRepositorioXmlTo>(nomProps.repo_rut()); 

    GridFilters<DcRepositorioXmlTo> filtrosRepositorio = new GridFilters<DcRepositorioXmlTo>(); 
    filtrosRepositorio.initPlugin(gridRepositorio); 
    filtrosRepositorio.setLocal(true);    
    filtrosRepositorio.addFilter(stringFilterEstado); 
    filtrosRepositorio.addFilter(stringFilterTipoEnvio); 
    filtrosRepositorio.addFilter(stringFilterRut); 


    VerticalLayoutContainer containerSouth = new VerticalLayoutContainer(); 
    containerSouth.add(gridRepositorio, new VerticalLayoutData(1, 1)); 
    containerSouth.add(pagingToolBar, new VerticalLayoutData(1, -1)); 

    FramedPanel southPanel = new FramedPanel(); 
    southPanel.setHeaderVisible(false); 
    southPanel.setBorders(false); 
    containerSouth.getScrollSupport().setScrollMode(ScrollMode.AUTO); 

    southPanel.setSize("784px", "430px"); 
    southPanel.setWidget(containerSouth); 

    return southPanel; 

} 

private void dialog(String sql){ 

     TextAreaItem textAreaItem = new TextAreaItem(); 
     textAreaItem.setValue(sql); 
     textAreaItem.setShowTitle(false); 
     textAreaItem.setWidth(580); 
     textAreaItem.setHeight(370); 
     DynamicForm form = new DynamicForm(); 
     form.setFields(textAreaItem); 

     com.smartgwt.client.widgets.Window w = new com.smartgwt.client.widgets.Window(); 
     w.setTitle("Codigo SQL"); 
     w.addItem(form); 
     w.setWidth(600); 
     w.setHeight(400); 
     w.show(); 

    } 

... 
geters and seters 
... 
} 

Dans l'ancienne version des navigateurs, le bouton dans la grille fonctionne correctement, mais pas maintenant.

Seul le travail de l'affichage de la boîte de dialogue:

... 
if(verXml){ 
       dialog(carta); <----- it works 
      }else{ 
       if(
... 

la présenter de la forme est comme ne rien faire, et apears Thes errror « soumission de formulaire annulée parce que le formulaire est pas connecté » sur la console du navigateur

Désolé par le spanglish, mais le code a été maintenu par de nombreux développeurs depuis longtemps.

Répondre

0

Cela se produit lorsque le formulaire n'existe pas dans le corps.

Jetez un oeil ici: Getting Error "Form submission canceled because the form is not connected"

+0

comment je peux le faire? J'ai essayé de créer le formulaire dans VisualizadorCartasTab et de définir le formulaire sur l'objet GrillaRepositorioXML, puis en définissant VerticalLayoutContainer avec les chaînes nécessaires. mais ne fonctionne pas –