2009-01-31 67 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}')"/>