2013-08-22 2 views
0

У меня есть форма, которая имеет один флажок, пользователям нужно выбрать некоторые из параметров и выбрать одну из предоставленных кнопок. Две кнопки должны возвращать выбранные параметры для того же действия (первое действие), которое инициировало страницу, а другая кнопка должна отправить параметры другому действию (следующее действие).Как передать параметры типа Список между действиями?

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

Цель состоит в том, чтобы иметь три отдельные кнопки отправки для одного флажка.

Я сравнил свой код с this, хотя они кажутся такими же, но мои не работают.

Форма

<form name="FirstActionFrom" method="POST" action="doActions"> 
      Check box goes here 
     <input id="ThisBtn1" type="submit" name="req" value="This1"/>&nbsp 
     <input id="ThisBtn2" type="submit" name="req" value="This2"/> 
     <input id="NextBtn" type="submit" name="req" value="Next"/> 
    </form> 

Первое действие:

..... 
private List<Long> selectedOptions; 
{ 
    System.err.println("size of options:" + this.selectedOptions.size()); 
    if req is equal to Next then 
     return "NextAction" 
    else do whatever is required 
} 

getter and setter go here 
} 

Struts.xml

<result name="NextAction" type="redirectAction"> 
       <param name="actionName">NextAction</param> 
       <param name="namespace">/Users/Next</param> 
       <param name="selectedOptions">${selectedOptions}</param> 
</result> 

Следующая Действие

..... 
private List<Long> selectedOptions; 

... { 
    System.err.println("size of options:" + this.selectedOptions.size()); <<Always shows Zero 
    return "showThis" 
} 

getter and setter go here 
} 

Результат после выбора одного параметра

SEVERE : size of options:1 
SEVERE : size of options:0 
+0

У второго действия есть правильный общедоступный сеттер/геттер для параметра? –

+0

Да, это вопрос обновлен – J888

+0

Вы уверены, что первое действие будет собирать все параметры соответствующим образом? –

ответ

-1

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

Я рекомендую не использовать строковую переменную session или type, но вызывать метод следующего действия из вашего первого действия, и как только все вычисления будут выполнены, отправьте запрос переадресации другому методу, чтобы вернуть его страницу результатов.

+0

Его вполне возможно. В приведенной выше ссылке проблема связана с тегами. Теги, такие как textfield, select, hidden и т. Д. Передают значение классу, указанному struts. !! Вы не можете передать значения, если использовать теги, такие как s: свойство и т. Д. !! – Dileep

-1

Это можно легко сделать с помощью изменения формы действия в JSP странице ..

изменить имя действия Вы можете использовать JavaScript. Делая это, вы можете сопоставить jsp другому классу с помощью struts.XML. Все, что вам нужно - это новое определение действия в Struts.XMl.

В классе фасоли, вы просто хотите создать переменную с именем вашего списка и того же типа, и, наконец, создать геттеры и сеттеры. Вы получите все значения в jsp, (независимо от типа) внутри боба (распорки отображают значения для вас).

Поскольку вы сказали, что у вас уже есть список в одном действии.Я не попадаю в эту часть.

Теперь вы можете перенаправить класс компонента (Action) из JSP.

Jsp Файл

<s:form id="formid" action="action1"> 
/.../ 
<s:hidden name="lstVariablename"/> 
<s:hidden name="lstVariablename"/> 
<s:hidden name="lstVariablename"/> 
<s:hidden name="lstVariablename"/> 
/.../ 
    </s:form> 

Теперь создадим функцию JavaScript внутри JSP

<script>  
function changeAction(){ 
    document.formid.action =action2 
    } 
</script> 

struts.XML

<action name="action1" 
     class="com.XXX.Action1" 
     method="methodOfAction1"> 
     <result name="success">/name.jsp</result> 
    </action> 

    <action name="action2" 
     class="com.XXX.Action2" 
     method="methodOfAction2"> 
     <result name="success">/name.jsp</result> 
    </action> 

Внутри Bea n Класс (действие)

private List<String> lstVariablename; 

/....Getters and Setters............ 
+0

Downvoter вы могли бы объяснить? – Dileep

+0

Я делаю это в течение многих лет и получил нисходящее движение для этого. !! Питти на тебя. Если вы не понимаете, что я сказал, сначала спросите. !! – Dileep