Menu

@DefaultValueCalculator para propiedad String

Jose Ruiz
2015-09-06
2015-10-16
  • Jose Ruiz

    Jose Ruiz - 2015-09-06

    @DefaultValueCalculator(PluDeProductoRutaCalculator.class)
    private String ruta;

    public String getRuta() {
    return ruta;
    }

    public void setRuta(String ruta) {
    this.ruta = ruta;
    }

    public class PluDeProductoRutaCalculator implements ICalculator {

    private static final long serialVersionUID = -2011531403477967758L;
    
    private String ruta;
    
    public Object calculate() throws Exception {
        ruta = PreferenciasUtil.getPluDeProductoRuta();
        return "puttto";
    }
    
    public String getRuta() {
        return ruta;
    }
    
    public void setRuta(String ruta) {
        this.ruta = ruta;
    }
    

    }

     
  • Jose Ruiz

    Jose Ruiz - 2015-09-06

    Cabe aclarar que la clase es transitoria

     
  • Javier Paniza

    Javier Paniza - 2015-09-08

    Hola José:

    Los valores por defecto no se calculan hasta que llamas a getView().reset(), como hace la acción new, por ejemplo. Añade a tu controlador la siguiente acción:

        <action  name="iniciar" 
            class="org.openxava.actions.NewAction"
            hidden="true"/>
    

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

     
    • Jose Ruiz

      Jose Ruiz - 2015-09-08

      El controlador quedo de la siguiente forma:

      <controlador nombre="PluDeProducto">
      <accion nombre="generar" oculta="true" clase="org.openxava.nizza.actions.PluDeProductoGenerarAction">
      <usa-objeto nombre="xava_view"/>
      </accion>
      <accion nombre="exportar" oculta="true" clase="org.openxava.nizza.actions.PluDeProductoExportarAction">
      <usa-objeto nombre="xava_view"/>
      </accion>
      <action name="iniciar" class="org.openxava.actions.NewAction" hidden="true"/>
      </controlador>

      La cuestión es que no me funciona. Ya se que @DefaultValueCalculator entra en accion al presionar el boton nuevo. La idea es que cuando ingreso a la pantalla de Plu de producto tome los valores por defecto.
      
       
  • Javier Paniza

    Javier Paniza - 2015-09-10

    Hola José:

    Se me olvido poner el on-init="true", además no puedes mezclar inglés y español, si usas controladores.xml todo tiene que estar en español, por lo que ignora action. Ponlo así:

    <accion nombre="iniciar" clase="org.openxava.actions.NewAction" oculto="true" al-iniciar="true"/>
    

    No debes esperar que yo te ponga aquí el código para que copies y pegues en tu proyecto, sino que sabiendo la causa del problema, en este caso que has de llamar a getView().reset() para que se calculen los valores por defecto, deberías poder solucionarlo por ti mismo.


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

     
  • Jose Ruiz

    Jose Ruiz - 2015-10-06

    Hola Javier!!!

    Te comento que no estoy pudiendo hacerlo funcionar. Te aclaro que estuve mirando https://openxava.wikispaces.com/controllers_es#Controladores-Inicializando%20un%20m%C3%B3dulo%20con%20una%20acci%C3%B3n y mi intención nunca es que me hagas el código. Pongo mi codigo completo para que me den una mano y logar cumplir mi objetivo.

    <controlador nombre="PluDeProducto">
    <accion nombre="generar" oculta="true" clase="org.openxava.nizza.actions.PluDeProductoGenerarAction">
    <usa-objeto nombre="xava_view"/>
    </accion>
    <accion nombre="exportar" oculta="true" clase="org.openxava.nizza.actions.PluDeProductoExportarAction">
    <usa-objeto nombre="xava_view"/>
    </accion>
    <accion nombre="iniciar" clase="org.openxava.nizza.actions.PluDeProductoIniciarAction" oculto="true" al-iniciar="true"/>
    </controlador>

    La clase PluDeProductoIniciarAction es :

    package org.openxava.nizza.actions;

    import org.openxava.actions.*;

    public class PluDeProductoIniciarAction extends ViewBaseAction {

    public void execute() throws Exception {
        getView().reset();
        System.out.println("************************************************************************************************");
        System.out.println("************************************************************************************************");
        System.out.println("************************************************************************************************");
    }
    

    }

    No se donde puede estar el problema

     
  • Javier Paniza

    Javier Paniza - 2015-10-08

    Hola José:

    ¿La accion PluDeProductoIniciarAction se llega a ejecutar?
    ¿Has definido tu módulo en application.xml o aplicacion.xml? Si es así, pon aquí la definición del módulo.


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

     
  • Jose Ruiz

    Jose Ruiz - 2015-10-14

    Hola Javier:

    La acción PluDeProductoIniciarAction no se llega a ejecutar. Te aclaro que el módulo PluDeProducto funciona bien, es decir, al presionar Generar se cargandan los valores en la tabla. El tema esta en que se carguen valores por defecto al ingresar al modulo, la solución temporal que encontre, es que al presionar el boton generar se carguen los valores por defecto.

    <modulo nombre="PluDeProducto">
    <var-entorno nombre="XAVA_SEARCH_ACTION" valor="CRUD.searchReadOnly"/>
    <modelo nombre="PluDeProducto"/>
    <controlador nombre="Print"/>
    </modulo>

     
  • Javier Paniza

    Javier Paniza - 2015-10-16

    Hola José:

    Ya encontré el problema. Cuando no defines un módulo OpenXava genera uno para ti por defecto que usa como controlador el controlador llamado como la entidad si existe. Sin embargo, cuando defines el módulo explicitamente en aplicacion.xml, los controladores son los que tu pongas, ni más ni menos.

    Es decir, define el módulo de esta manera:

    <modulo nombre="PluDeProducto">
        <var-entorno nombre="XAVA_SEARCH_ACTION" valor="CRUD.searchReadOnly"/>
        <modelo nombre="PluDeProducto"/>
        <controlador nombre="PluDeProducto"/> 
        <controlador nombre="Print"/> 
    </modulo>
    

    Y te funcionará. Fíjate en que hemos añadido el controlador PluDeProducto.


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

     

Log in to post a comment.