Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > submit in JSP


Автор: integral 11.3.2007, 16:54
На jsp страничке есть несколько submit. Как узнать, какой был нажат, если это вообще возможно?
Вообще, надо вызывать разные методы для объекта в зависимости от нажатой пользователем клавиши (перед этим считав поля). Ничего лучше нескольких submit"ов не придумал. Подскажите, может есть способ проще?
Спасибо

Автор: tux 11.3.2007, 16:57
В переметрах запроса будет параметр с именем той кнопки, которая была нажата. По его наличию и можно определить что нажато.

Автор: integral 16.3.2007, 22:44
А как-то по другом можно?

Добавлено @ 22:46 
Если нет, то как считать значение этого параметра, хотелось бы пример кода....

Автор: Zamuta 16.3.2007, 23:13
integral, например у тебя есть 3 разных метода которые тебе нужно выполнить в зависимости от нажатой кнопки, method1, method2, method3. А в action у этих кнопок пишешь имена методов которые тебе нужно выполнить. 

У кнопки номер 1:  action="#{bean.method1}"
                          2: action="#{bean.method2}"
                          3: action="#{bean.method3}"
А дальше методы: 

 method1{
       bla-bla
}

Теперь понятно? Или объясни конкретнее что нужно...

Автор: tux 16.3.2007, 23:43
Цитата(Zamuta @  16.3.2007,  23:13 Найти цитируемый пост)
Теперь понятно?

Я ничего не понял. smile

Автор: check 17.3.2007, 00:14
Ну хотя бы так, если вопрос  в том как вообще его получить..
Код

<form action="page.jsp" method="post">
 ...
 ...
<input type="submit" name="button_name" value="Ok"> 
</form>




Код

<%@ page import="java.util.*" %>
 ...
 ...
 ...

Enumeration fields = request.getParameterNames();
if (fields.hasMoreElements()) {
   while(fields.hasMoreElements()) {
     String field= (String)fields.nextElement();
     String name = request.getParameter(field);
     if (name.equals("button_name"))  {
        // нажали кнопку с именем button_name   
     }
   }
}


Добавлено @ 00:15 
Ы?

Автор: integral 17.3.2007, 19:08
ТЕперь все понятно, огромное пасибо!

Автор: danik 20.8.2007, 16:33
Аналогичная проблема, но связанная со Struts. Есть форма, у неё 2 кнопки, каждая из них вызывает разные action. Пробую так:
Код

<html:form action="action1">
...

<!-- вызывает экшн по умолчанию ('action1') -->
<html:submit>
  Action1
</html:submit>

<!-- Вешаю другой кнопке на onclick  другой экшн-->
<html:submit onclick="this.form.action='action2.do'">
  Action2
</html:submit>

</html:form>

Mozilla такое кушает, IE игнорирует onclick="this.form.action='action2.do'" и вызывает action1 : (. 
Чё делать-то?

Автор: YuG 20.8.2007, 17:43
danik, тут скорее, javascript, а не struts:

Делай примерно так:

Код

<script language="JavaScript">
  function process(action){
        document.zzzForm.action=action;
        document.zzzForm.submit();
  }
</script>


Код

<html:form styleId="zzzForm" action="action.do">
    .....
    <html:button onclick="process('action2.do')" />
    .....
</html:form>

Автор: danik 20.8.2007, 21:40
Дык тот же банан, вид сбоку. (:
Ведь код 
Код

<script language="JavaScript">
  function process(action){
        document.zzzForm.action=action;
        document.zzzForm.submit();
  }
</script>

аналогичен коду 
Код

<html:submit onclick="this.form.action='action2.do'">

И результат предсказуем, ИЕ опять игнорит указания и выполняет экшен, зашитый в форме.

Автор: YuG 21.8.2007, 09:37
danik, целиком код странички покажи, плиз...

Автор: Alexis 21.8.2007, 10:07
danik, может быть это поможет
http://struts.apache.org/1.3.8/struts-extras/apidocs/index.html
This is useful in cases where an HTML form has multiple submit buttons with the same name.

Автор: danik 21.8.2007, 11:04
Да, вроде то, что нужно. Пожалуй остановлюсь на EventDispatchAction. Псиба.

Автор: Alexis 21.8.2007, 11:51
Цитата(danik @  21.8.2007,  11:04 Найти цитируемый пост)
Пожалуй остановлюсь на EventDispatchAction

Забыл, что страница с фреймами. Я хотел на  http://struts.apache.org/1.3.8/struts-extras/apidocs/org/apache/struts/actions/LookupDispatchAction.html. Может быть они даже больше вам подойдет?

Автор: danik 21.8.2007, 12:10
Посмотрю и этот вариант, да и выберу, какой душе ближе. Ещё раз благодарю за помошь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)