АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Наследники Action

Читайте также:
  1. ACTION (С. Действие в разделе)
  2. Fractional numerals
  3. Interaction of Dictionary And Contextual Logical Meaning
  4. Mechanisms of action of laser radiation on biological tissues
  5. Mehanisms of action of laser radiation on biological tissues.
  6. Method of diffraction of X-rays radiation.
  7. Org.apache.struts.action.ActionMapping.
  8. Principle of action
  9. Relative Error or Fractional Error
  10. Дмитрий Донской и его наследники.
  11. Модель Поля Эйглие и Эрика Лангеарда (Service action -модель)
Существуют альтернативы классу Action, наследуемые от Action и облегчающие задачу разработчика.Класс Action объявляеет только метод execute() и ранее использовался
в виде ответа на одно действие пользователя, что увеличивало количество классов приложения и усложняло его поддержку.Класс DispatchAction позволяет объединить несколько методов работы
с одним модулем в одном классе и вызывать их в зависимости от значения
параметра запроса. Например, для работы с модулем User класс UserDispatchAction мог бы содержать методы save(), delete(), list() и другие.Параметр, значение которого будет использовано для вызова метода, описывается в struts-config.xml в описании action.

<action path="/ModuleAction"

type="com.struts.ModuleDispatchAction"

parameter="method"

...</action>В коде JSP теперь требуется расставить линки с параметром method, значение которого должно соответствовать методу, вызываемому в подклассе. Например:

<a href="ModuleAction.do? method=edit &id=1>Edit</a>

<a href="ModuleAction.do? method=view &id=1>View</a>Далее осталось реализовать методы в ModuleDispatchAction. Если параметр не содержит значения, то вызовется метод unspecified() данного класса. Так же можно реализовать метод cancelled(), который будет вызываться при использовании кнопки <html:cancel/>.

import org.apache.struts.actions.DispatchAction;

 

public class ModuleDispatchAction extends DispatchAction{

public ActionForward edit(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws IOException,

ServletException {

// код для обработки

}

public ActionForward view(...)

throws IOException, ServletException {

// код для обработки

}

...

public ActionForward unspecified(...)

throws IOException, ServletException {

 

mapping.findForward("methodNotFound");

}

public ActionForward cancelled(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws IOException, ServletException {

 

mapping.findForward("cancelPage");

}

}

Класс LookupDispatchAction является наследником от DispatchAction. В отличие от предыдущего класса, который в основном используется через использование линков на View, данный класс применяется если форма должна иметь несколько различных кнопок для выполнения запроса на сервер.

Пусть на странице JSP с помощью тега <html:submit/> расположены кнопки, свойство property которых указывает на название параметра, отправляемого на сервер со значением тега <bean:message/> после нажатия на эту кнопку.

<html:form action="ModuleAction.do">

...

<html:submit property=" method ">

<bean:message key=" submit.button.print " />

</html:submit>

<html:submit property=" method ">

<bean:message key=" button.save " />

</html:submit>

</html:form>

Затем так же, как и для класса DispatchAction, должен быть задан параметр, который содержит вызываемый метод.

<action path="/ModuleAction"

type="com. struts.ModuleLookupDispatchAction"

parameter="method"

...</action>

Реализуем методы аналогично DispatchAction классу, но также реализуем метод getKeyMethodMap(), который организует mappingмежду ключом названия кнопки и методом.

import org.apache.struts.actions.LookupDispatchAction;

...

public class ModuleLookupDispatchAction

extends LookupDispatchAction {

private static Map m = new HashMap();

static {

m.put("myapp.submit.button.print","print");

m.put("myapp.submit.button.save","save");

}

protected Map getKeyMethodMap(){

return m;

}

public ActionForward print(...)

throws IOException, ServletException {

...

}

public ActionForward save(...)

throws IOException, ServletException {

...

}...}Класс MappingDispatchAction также является наследником DispatchAction класса, где вызываемый метод определяется не по значению параметра, а по запрашиваемому URL-адресу маппинг которого хранится в struts-config.xml. Для одного класса MappingDispatchAction может существовать несколько возможных элементов <action>:

<action path="/userUpdate"

type="com.struts.UserMappingDispatchAction"

parameter="update"

...

<action path="/userAdd"

type="com.struts.UserMappingDispatchAction"

parameter="create"

...Значение атрибута parameter содержит название метода, который должен отреагировать на данный запрос.И, как в предыдущих случаях, осталось реализовать необходимые методы.

import org.apache.struts.actions.MappingDispatchAction;

...

public class UserMappingDispatchAction

extends MappingDispatchAction{

 

public ActionForward update (ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws IOException, ServletException {

...

}

public ActionForward create (...)

throws IOException, ServletException {

...

}

...

public ActionForward unspecified(...)

throws IOException, ServletException {

mapping.findForward("methodNotFound");

}

}


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)