Menu

Evitar combo vacío en Diálogo/Vista Transitoria

Giuseppe
2014-12-24
2014-12-29
  • Giuseppe

    Giuseppe - 2014-12-24

    Hola a todos,

    tengo una acción que abre un modal con una vista transtoria simplemente para escoger el tipo de informe que se quiere imprimir.

    La vista sólo contiene un combo (Valorado, y Sin Valorar ... de un enum) y un botón, que dispara la JasperReportBaseAcion en cuestión.

    @Override
        public void execute() throws Exception {
             // Crear el diálogo modal y establecer el modelo a usar
            showDialog();
            // showNewView();
            getView().setTitleId("tipo_informe");
            getView().setModelName("InformeTipo");
            addActions("AccionesDocumentos.imprimirDocumento");
        }
    

    Y el modelo de esta vista sólo contiene:

        private TipoInforme tipoInforme;
        public enum TipoInforme {
            Valorado, SinValorar
        }
    
        ... getters and setters
    

    El problemilla que me encuentro es, que no quiero que el combo tenga la posibilidad de vacío.
    Buscando por el foro encontré que al parecer hay que poner @Required pero al menos en mi caso no funciona, y puedo disparar la acción del diálogo.
    Aunque no me gusta esta solución, he pensado en quizás controlarlo desde dentro de la acción que dispara el botón del diálogo, con algo del tipo:

            if (getView().getValue("tipoInforme")==null) {
                addError("informetipo_no_seleccionado");
            }
    

    Y aunque el error si aparece en pantalla, también se dispasra igualmente el informe y no sé como cancelarlo.

    Saludos.

     
  • Javier Paniza

    Javier Paniza - 2014-12-26

    Hola Giuseppe,

    hay que poner @Required

    ¿Has probado combinar @Required con @DefaultValueCalculator?

    se dispasra igualmente el informe y no sé como cancelarlo

    Añade esto a tu acción:

    public String getForwardURI() {     
        return getErrors().contains()?null:super.getForwardURI();
    }
    

    Pensándolo bien, esto debería funcionar así por defecto. ¿No crees?


    Ayuda a otros en este foro como yo te ayudo a ti.

     
  • Giuseppe

    Giuseppe - 2014-12-27

    El DefaultValueCalculator no me ha funcionado.
    He probado con

    @Override
        public Object calculate() throws Exception {
    
            return "Valorado";
        }
    

    con return 0, return 1, y nada.

    Respecto a la cancelación de la acción...
    Si, añadiéndolo funciona a la perfección.

    Y si, lo lógico sería que por defecto si se lanza algún error que cancele la acción, pero con posibilidad de deshacerlo, porque, aunque serían las que menos, si pueden existir casos donde se quiera continuar con la acción en sí a pesar de un error.

    Saludos.

     
  • Javier Paniza

    Javier Paniza - 2014-12-29

    Hola Giuseppe,

    He probado ... y nada.

    Tienes razón. No está soportado, de momento.

    lo lógico sería que por defecto si se lanza algún error que cancele la acción

    Yo pienso igual. Añádelo como Feature Request con un vínculo a este hilo y lo modificaremos.

    con posibilidad de deshacerlo

    Por supuesto, porque siempre podrás sobreescribir el getForwardURI().


    Ayuda a otros en este foro como yo te ayudo a ti.

     

Log in to post a comment.