2009-01-31 32 views
8

Estoy usando Apache BeeHive. Mi JSP contiene un formulario (< netui: formulario >) con un cuadro desplegable (< netui: seleccione >) y un botón de enviar (< netui: botón >). Cuando se presiona el botón Enviar, se enviará la acción predeterminada del formulario ("doAction1). Quiero que se envíe una acción diferente (" doAction2 ") cuando se selecciona una opción del menú desplegable. (Consulte la Figura 1).Acciones de formulario diferentes basadas en eventos de cambio seleccionados

Mi primera inclinación fue crear una función de JavaScript que cambie el atributo de acción del formulario al nuevo nombre de la acción y luego envíe el formulario (consulte la Figura 2 "doAction1" a una URL completa como http://localhost:7001/app/doAction1.do.

La cadena "doAction2" que paso al método JavaScript submitForm (form, newAction) no puede convertir "doAction2" en una URL apropiada (bien podría, pero solo de una manera tonta). Fui en busca de una etiqueta de netui que pudiera convertir un nombre de acción simple en una URL, pero no pude encontrar una.

Entonces, ¿cuál es la forma correcta de lograr esto?

Figura 1 - código JSP fragmento

<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> 

Figura 2 - JavaScript función para cambiar la forma de acción y enviar el formulario

<netui:scriptBlock placement="before"> 

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

</netui:scriptBlock> 

Respuesta

0
function submitForm(form, newAction) { 
    form.action = newAction + ".do"; 
    form.submit();     
} 

o

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