2012-05-12 5 views
1

Как создать несколько действий в Struts2 в одном классе действий? Просьба привести пример? Я нашел следующий код при поиске в Интернете, но он дает ошибки ИЛИ Нужно ли писать отдельный класс действия для каждого запроса?Создать несколько действий в Struts2

+2

Какой код вы пробовали? Вы посмотрели сайт Apache Struts? Вы можете повторно использовать класс действия между несколькими действиями, просто предоставляя разные сопоставления, и эти сопоставления могут опционально определять методы, отличные от стандартного «выполнить», если подпись приемлема. – Quaternion

+0

Активный этот тип вопроса здесь: http://stackoverflow.com/a/16505496/1490962 –

ответ

4

Помимо того, что @Quaternion сказал, действия S2 сами по себе являются java-классом, и я не уверен, что вы просите (несколько действий в Struts2 в одном классе действий).

У нас есть несколько способов, чтобы использовать один класс действий S2 вот несколько из них

Карты одного класса действий с другим псевдонимом, как.

<action name="A" class="MyActionClass"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 


<action name="B" class="MyActionClass"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

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

для например, скажем, у нас есть класс UserAction, который отвечает за обработку взаимодействия с пользователем, как

  1. Войти
  2. Выход
  3. Регистрация

для этого нам не нужно создавать разные Классы действий, но мы можем создать один класс действий, например UserAction, и можем определить различные методы в его стороне и настроить S2 для вызова разных методов, таких как

<action name="Logon" class="UserAction" method="logon"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

<action name="Logout" class="UserAction" method="logout"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

<action name="Register" class="tUserAction" methood="register"> 
    <result type="redirectAction">Menu</result> 
    <result name="input">/Logon.jsp</result> 
</action> 

Надеется, что это может помочь вам очистить ваши сомнения

В случае использования выше MyActionClass было сопоставлено с два псевдонимом А и В, и вы можете отобразить на любой номер.

2

Другой метод:

Вот класс действие с 3 действий (выполнение, ДЕЙСТВИЙ1, Мотор2)

public class MyAction extends ActionSupport{ 

    public String execute(){ 
    return SUCCESS; 
    } 

    public String action1(){ 
    return SUCCESS; 
    } 

    public String action2(){ 
    return SUCCESS; 
    } 
} 

Вот конфиг:

<action name="myAction" class="MyAction"> 
    <result>showMe.jsp</result> 
    <result name="input">showMe.jsp</result> 
</action> 

Действие "выполнить" будет вызываться по умолчанию. Чтобы вызвать действие «action1» или «action2», вы должны поместить параметр в свой запрос с именем «method: action1» или «method: action2».

  • действие вызова по умолчанию (выполнить): /path_to_action/myAction.action
  • Вызов действие1: /path_to_action/myAction.action?method:action1
  • Вызов action2:/path_to_action/myAction.action?Метод: action2

Вы можете изменить метод по умолчанию:

<action name="myAction" class="MyAction" method="action1"> 
    <result>showMe.jsp</result> 
    <result name="input">showMe.jsp</result> 
</action> 

Таким образом, когда ваш звонок /path_to_action/myAction.action, действие1 будет выполнена.

2

У меня есть вопрос, что вы хотите написать несколько переадресаций в одном действии на основе действия, выбранного как добавление/редактирование/удаление кода в одном месте. Вы должны искать DispatchAction для вашего требования.

Ниже приведено несколько примеров, на которых вы можете посмотреть, все из них предоставляют способ реализации DispatchAction.

Link1 Link2 Link3

+0

Это если вы используете Struts1 в то время как OP специально прокомментировал Struts2. – Naros

+0

Спасибо за указание, что crancran. Вы можете добавить свою собственную версию ответа. –

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