2010-09-08 3 views
1

Im новой для Struts2 .... У меня есть некоторые сомнения, несколько ниже ...Struts2 Основные сомнения

а) В Struts2, как делает применение находит struts.xml ?? (мы не определяем struts.xml в файле web.xml, в отличие от Struts1, который мы определяем struts-config.xml в файле web.xml, так как он увидит этот файл struts.xml)

b) почему мы не пишем extends ActionSupport для нашего класса Action .. Я видел много примеров без расширения с любым другим предопределенным классом Action .. Как он находит метод execute() или метод populate() в нашем классе Action, если мы не расширяем какой-либо другой предопределенный класс действий или не реализуем Action методы интерфейса?

с) В каких случаях мы используем extends Action Support

+0

Есть слишком много возможных ответов, или хорошие ответы будут слишком длинными для этого формата. Пожалуйста, добавьте детали, чтобы сузить набор ответов или изолировать проблему, на которую можно ответить в нескольких абзацах. –

ответ

3

а) Если вы не переопределяют имя файла конфигурации («конфигурации» параметр для Struts фильтра в web.xml), то он будет по умолчанию «распорки .xml». Это просто жестко заданное значение по умолчанию, а значит, «конфигурация по соглашению».

b) Рамка разрешает «простые старые объекты java» (POJO) для действий. Просто скажите, какой метод вызывать (в struts.xml), и он будет использовать отражение, чтобы найти такой метод (должен быть no-args и вернуть String) и вызвать его. С другой стороны, для дополнительной функциональности используются некоторые интерфейсы, например, если ваш класс реализует «Подготовимый», то метод метода prepare() будет автоматически вызван до выполнения (возможно, возможно, аналогичен «заполнению» в Struts1?)

c) Расширение ActionSupport полностью необязательно, но дает доступ к некоторым функциональным возможностям, которые могут быть полезны, например реализации по умолчанию для некоторых методов действий, таких как «ввод», удобные методы интернационализации и т. Д.

3

+1 к ответу Тодда.

В b): обратите внимание, что нет необходимости указывать метод (хотя это можно сделать), по умолчанию («соглашение») будет вызываться метод execute().

В c): расширение ActionSupport не является обязательным, и IMO довольно часто. Иногда также целесообразно реализовать свой собственный (скажем) BaseAction (который часто расширяет ActionSupport), чтобы разделить общую функциональность вашего webapp и сделать все (или почти все) ваши действия расширением.

Смежные вопросы