表单提交已取消,因为表单未在GWT上连接

时间:2017-02-10 18:39:32

标签: javascript java gwt smartgwt gxt

我有一个包含GWT,SmartGwt和Sencha GXT的网站。最近,随着更新的浏览器(IE,Chrome,Opera,Firefox),我们网站上的一些按钮无效。

我有一个带有这样的网格的标签:

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

代码看起来像这样:

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
...
}

在旧版本的浏览器中,进入网格的按钮工作正常,但现在不行。

只显示对话框:

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

表单的提交就像什么都不做,并且在浏览器的控制台上出现错误“表单提交被取消,因为表单没有连接”

很抱歉,但许多开发人员长时间维护代码。

1 个答案:

答案 0 :(得分:0)

当身体中不存在表格时会发生这种情况。

看看这里:Getting Error "Form submission canceled because the form is not connected"