Menu

Modificar comportamiento Reference.modify para una referencia

2023-05-26
2023-05-29
  • Xavier Gonzalez

    Xavier Gonzalez - 2023-05-26

    Hola,

    Tengo un @OnChange en una entidad, que es una referencia en otra entidad.

    Este @OnChange simplemente esconde o muestra varios campos según el valor elegido.

    Cuando le doy a modificar a la referencia, al abrirse el cuadro de diálogo no se aplica el @OnChange (entiendo que normal)

    Por lo que había pensado en modificar el comportamiento del modificar de una referencia, para que hiciese lo mismo que el OnChange.

    De qué forma lo puedo hacer?

    He probado lo siguiente, y no funciona, entiendo que necesita saber el módulo y referencia:

        @ManyToOne
        @Required
        @DescriptionsList(descriptionProperties="descripcio")
        @Action("Reference.modify")
        private PerfilAgenda perfilAgenda;
    
     

    Last edit: Xavier Gonzalez 2023-05-26
  • Javier Paniza

    Javier Paniza - 2023-05-29

    Hola Xavier:

    modificar el comportamiento del modificar de una referencia,

    Eso se hace así:
    https://openxava.org/OpenXavaDoc/docs/view_es.html#Vista-Personalizacion+de+referencia-Accion+de+modificacion+propia

    El problema es que eso está pensado para modificar el coportamiento de todas las referencias a esa entidad en la aplicación y no de una referencia concreta.

    He probado lo siguiente, y no funciona,

    Pero si pones tu acción propia, en ella sí que puedes configurar la acción padre con el valor correcto para model y keyProperty. Es decir, puedes definir tu referencia así:

      @ManyToOne
        @Required
        @DescriptionsList(descriptionProperties="descripcio")
        @Action("Agenda.modificarPerfilAgenda")
        @NoModify // AÑADE ESTO TAMBIÉN
        private PerfilAgenda perfilAgenda;
    

    Y en tu acción:

    public class ModificarPerfilAgenda extends ModifyFromReferenceAction {
    
        public void execute() throws Exception {
            setModel("PerfilAgenda");
            setKeyProperty("perfilAgenda.id"); // SI EL @Id es id
            super.execute();
            // AQUÍ LO TUYO
        }
    
    }
    

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

     

Log in to post a comment.