2009-01-31 60 views
8

我正在使用Apache BeeHive。我的JSP包含一个带有下拉框(< netui:select >)和一个提交按钮(< netui:按钮>)的表单(< netui:表单>)。当提交按钮被按下时,表单的默认动作(“doAction1”)将被提交当我从下拉列表中选择一个选项时,我想要提交一个不同的动作(“doAction2”)(见图1)基于选择更改事件的不同表单操作

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

传递给JavaScript submitForm(form,newAction)方法的“doAction2”字符串无法将“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> 

回答

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