Последовательность модердивенных и подготовительных?

StackOverflow https://stackoverflow.com/questions/3438465

  •  27-09-2019
  •  | 
  •  

Вопрос

Я положил println() в каждом способе класса действия.

public String execute() throws Exception {
  System.out.println("execute");
  //...
 }
 public void prepare() throws Exception {
  System.out.println("prepare");
  //...
 }
 public Object getModel() {
  System.out.print("getModel");
  //...
 }

Я думал, что порядок будет; Подготовьте → Выполнить → GetModel.

Потому что я помню, я прочитал это в книге, поэтому я использовал класс Beans и сделать какую-то логику в prepare(), и просто верните успех в execute()Отказ И я думаю, что GetModel для толкания фасоли до валюстака, верно?

... Во всяком случае, консоль показал мне это. Это очень странно; Подготовьте → GetModel → Execute.

И это становится огромной проблемой для меня. Очень трудно объяснить причину на английском языке ... но я попробую!

Я использовал для создания каждого класса действий, который имеет дело с теми же бобами, и, конечно, существует одинаковые коды (переменные, и их GetTers и Getters), дублированные в каждом классе действий.

Теперь я пытаюсь создать одно действие, чтобы избежать этого дублирования. Этот класс действий имеет несколько методов (отображается в STRUTS.xml, как это;<action name="View_board" method="view">).

И как мы видели в консоли, это view() называется на последнем в классе действий, как execute(). Отказ То prepare() делает только фасоль только view() делает реальные работы. Но getModel() вызывается перед вызовом view(), Так что нет шансов поставить бобы в Valuestack.

Я надеюсь, что вы, ребята, понимаете, что я пытаюсь объяснить.

Суммируйте его, есть каждый класс действий, как BoardView, BoardDelete, WOOTWRITE ... И они работали хорошо! Но я ненавижу эту дублированные вещи, поэтому я создал класс BoardManager. Этот класс имеет каждый метод (как view()) который был обработан классом (как BoardView). Но этот вид () был вызван после звонка getModel(), поэтому боб (возвращение getModel()) не имеет бы шансов быть толкаться на Valuestack.

Пожалуйста, помогите мне. Научите меня свои ноу-хау в поле. Я разрабатываю это все самостоятельно, и это заставляет меня чувствовать себя так сильно.

Спасибо!!

Это было полезно?

Решение

Вы должны установить модель объекта самостоятельно, так как модельдиованный перехватчик может только толкать его в стек, если его не нуль. Если ваш GetModel () выглядит так:

SomeModelClass myModelObject = null;

public Object getModel()
{
   return myModelObject;
}

... вам придется установить ModelObject, чтобы он мог оттолкнуться к ValueStack. Вы могли бы сделать это таким образом, я думаю:

public void prepare(){
   myModelObject = new myModelObject("I'm so new");
}

... или просто инициализируйте его в поле:

SomeModelClass myModelObject = new myModelObject("I'm so new");

Не забудьте реализовать соответствующие интерфейсы (Modeldreviven и Costable). Надеюсь это немного поможет.

Другие советы

Я нашел свое собственное решение .. но не хороший ..

При установке объекта домена с помощью установки я нажимаю его на Valuestack вручную ..

Работает хорошо, и только 2 строки добавлены в мой класс.

Но я не чувствую себя так хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top