Pregunta

Estoy usando un marco MVC que es un poco como struts. Entonces, digamos que tengo una " Editar tienda " enlace en mi aplicación así es como se vería la url:

http: // localhost: 9080 / test? action = editStore & amp; storeNum = 10

Ahora, la acción determina mi Acción (análoga a la Acción de Struts) a ejecutar. La acción correspondiente aquí es: EditStoreAction. Al hacer clic en este, se abrirá una ventana emergente con diferentes atributos de una tienda para editar.

Mi pregunta aquí es: ¿Cómo escribo mis acciones? ¿Escribo dos acciones en este contexto?

  1. EditStoreAction que representará edit.jsp
  2. StoreSaveAction que     se invocará cuando el usuario presione     aceptar en la respuesta prestada de     edit.jsp.

O ¿Acabo de escribir una acción? EditStoreAction y enviar el formulario a la misma acción, sabría que el usuario ha presionado el botón aceptar para realizar cambios en el envío. Entonces, ejecutaría un flujo diferente en la Acción, que guardaría las actualizaciones en la base de datos y redirigiría a una página de diferencias.

¿Cuál es la mejor práctica aquí? ¿Crear tantas acciones como sea posible porque mantiene el código modular? ¿O simplemente escribe una acción para manejar todo en un jsp?

Sé que esta pregunta suena un poco trivial, sin embargo, a veces solo quieres hacer todo bien. De ahí la pregunta. Agradezco tu ayuda.

¿Fue útil?

Solución

La idea es, similar a Spring MVC, asignar sus acciones a los métodos de una clase específica, digamos controlador.

Entonces, en su caso, estas dos acciones se asignarán en dos métodos diferentes de la misma clase. Puede llamar a la clase StoreFormController y dos métodos, editStore () y saveStore () .

Mejor aún si haces dos controladores para cada entidad. Puede ser uno para todas las solicitudes GET y otro para solicitudes POST. Entonces, en su caso, habría dos controladores StoreController para todas las demás solicitudes y StoreFormController para todas las presentaciones de formularios, es decir, solicitudes posteriores. Ahora, su primera acción GET irá al método editStore () de StoreController , mientras que la segunda solicitud POST irá a saveStore () método de StoreFormController . Puede definir tantos métodos como sea necesario en cualquiera de estas dos clases según el tipo de solicitud.

Puede ver fácilmente de dónde vengo, si conoce Spring MVC API.

Otros consejos

Me gusta usar la clase DispatchAction de struts porque podría definir más de un método en la clase de acción (el método "ejecutar"). Detrás del capó, todo lo que hace es encontrar el método que tiene que ejecutar (enviado en el formulario o pasado en la URL), encontrar el método usando la reflexión, invocarlo con el conjunto correcto de argumentos (el método debe tener el mismo firma del método " ejecutar "), obtiene el resultado y lo pasa. DispatchAction simplemente anula la ejecución de "ejecutar" método de la clase Action para implementar ese comportamiento.

Dicho esto, en su caso, definiría solo una clase, digamos "DispatchStoreAction", y definiría dos métodos, probablemente "prepare". y "guardar". Me gusta hacerlo de esa manera porque todavía tengo una buena abstracción de clase (y no pones la `` acción '' que estás ejecutando en el nombre de la clase), porque tus métodos pueden identificar claramente lo que se supone que deben hacer, y También porque, por definición, las clases de acción tienden a ser pequeñas. Probablemente tendrá un " StoreLogic " o '' StoreBusiness '' definido en alguna parte, y esta clase manejará la lógica de negocios relacionada con la entidad en la que está trabajando. Personalmente, creo que es bueno si tienes uno '' StoreAction '' y luego una '' StoreLogic '', una '' UserAction '' y uno '' UserLogic '' y así sucesivamente: la relación no necesita ser 1 a 1, pero creo que ayuda a mantener el código.

Verifique el código fuente de la clase DispatchAction para obtener ideas sobre cómo hacer esto, pero la implementación debe ser trivial.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top