Последовательность модердивенных и подготовительных?
-
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 строки добавлены в мой класс.
Но я не чувствую себя так хорошо.