基于选择更改事件的不同表单操作

时间:2009-01-31 15:00:26

标签: java beehive netui

我正在使用Apache BeeHive。我的JSP包含一个表单(< netui:form>),其中包含一个下拉框(< netui:select>)和一个提交按钮(< netui:button>)。当按下提交按钮时,将提交表单的默认操作(“doAction1”)。我希望在从下拉列表中选择一个选项时提交不同的操作(“doAction2”)。(参见图1)。

我的第一个倾向是创建一个JavaScript函数,将表单的 action 属性更改为新的操作名称,然后提交表单(参见图2),但这不起作用。我发现该标记会将“doAction1”转换为http://localhost:7001/app/doAction1.do这样的完整网址。

我传递给JavaScript submitForm(form,newAction)方法的“doAction2”字符串无法将“doAction2”转换为适当的URL(它可以,但只能以kludgey方式)。我去寻找一个可以将普通动作名称转换为URL的netui标签,但我找不到。

那么,实现这个目标的正确方法是什么?

图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 :(得分:0)

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}')"/>