2015-03-02 2 views
0

В моем приложении Struts2 я хочу передать скрытое значение из JSP-файла в класс Action. Это будет единственной целью этой страницы JSP, поэтому на самом деле она будет действовать как страница перенаправления со скрытым значением в ней. Мой код:Авто-отправьте форму со скрытым значением

<form action="editexperiment" method="post"> 
    <s:hidden name="id" value="%{id}"/> 
    <button type="submit">Submit</button> 
</form> 

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

+0

... Как еще вы могли бы это сделать с помощью JavaScript? И какой смысл использовать форму для этого? –

+0

Дэйв, это как раз мое сомнение. Что касается вашего второго вопроса, если есть другой способ отправки переменной из одного действия в другое действие напрямую, без использования формы, мне любопытно узнать. Я также не упомянул об использовании объекта сеанса, потому что эта переменная будет точно использоваться в качестве ключа для получения объекта из карты сеанса. – jaff

+1

Как параметр URL? И там, где он хранится (сеанс или передан как параметр), на самом деле не актуально. Если у вас есть это на странице JSP, то это очевидно доступно на стороне сервера, и вам не нужно подвергать его вообще. Наличие страницы, которая существует исключительно для перенаправления с идентификатором, предоставленным с серверной стороны, кажется странным, поскольку вы можете просто перенаправить из конфигурации действия. –

ответ

1

Вместо того, чтобы отправлять страницу JSP из ActionOne, которая автоматически отправляет новый запрос ActionTwo, рассмотрели ли вы с использованием результата redirectAction, чтобы перейти от ActionOne к ActionTwo без необходимости использования вышеуказанного JSP?

Вы можете передать параметры (even dynamically, до определенного момента), как следует:

<action name="actionOne" class="foo.bar.ActionOne" > 
    <result name="success" type="redirectAction"> 
     <param name="actionName">actionTwo</param> 
     <param name="id">${id}</param> 
    </result> 
</action> 

Где id должен соответствовать к добытчика в вашем actionOne, и сеттер в вашем actionTwo.

+1

Это именно то, что я искал, гораздо более элегантное решение. Я много использую результат redirectAction, но я не знал, что в нем можно передать параметры. Большое спасибо. Я люблю СО, отмеченный как принятый. – jaff

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