Различные действия формы, основанные на событиях выбора изменений - PullRequest
8 голосов
/ 31 января 2009

Я использую Apache BeeHive. Мой JSP содержит форму () с раскрывающимся списком () и кнопку отправки (). При нажатии кнопки «Отправить» будет отправлено действие формы по умолчанию («doAction1»). Я хочу отправить другое действие («doAction2») при выборе параметра из раскрывающегося списка. (см. Рисунок 1).

Первым делом я хотел создать функцию JavaScript, которая изменяет атрибут формы action на новое имя действия, а затем отправляет форму (см. Рисунок 2), но это не сработало. Я обнаружил, что тег переводит «doAction1» на полный URL-адрес, например http://localhost:7001/app/doAction1.do.

Строка "doAction2", которую я передаю в метод JavaScript submitForm (form, newAction), не может преобразовать "doAction2" в соответствующий URL-адрес (что вполне возможно, но только в хитрой форме). Я искал тег netui, который мог бы преобразовать простое имя действия в URL, но я не смог его найти.

Итак, как правильно это сделать?

Рисунок 1 - Фрагмент кода JSP

<netui:form action="doAction1" method="post">
    <netui:select dataSource="actionForm.field1"
                  optionsDataSource="${actionForm.field1Selections}"
                  onChange="submitForm(this.form, 'doAction2')"/>

    <p/>
    <netui:button>Submit</netui:button>
</netui:form>

Рисунок 2. Функция JavaScript для изменения действия формы и отправки формы

<netui:scriptBlock placement="before">

    function submitForm(form, newAction) {
        form.action = newAction;
        form.submit();              
    }

</netui:scriptBlock>

1 Ответ

0 голосов
/ 01 октября 2011
function submitForm(form, newAction) {
    form.action = newAction + ".do";
    form.submit();                  
}

или

<c:url var="newActionUrl" value="/the/path/to/the/action/doAction2.do"/>

<netui:select dataSource="actionForm.field1"
              optionsDataSource="${actionForm.field1Selections}"
              onChange="submitForm(this.form, '${newActionUrl}')"/>
...