2009-10-27 2 views
4

Я пытаюсь создать простую форму добавления/удаления, используя основанную на аннотациях Spring MVC. «Добавить» функциональность идет гладко, но когда я попытался добавить еще одну кнопку в форму, я застрял.Есть ли способ создать форму с несколькими кнопками отправки на Spring MVC с помощью аннотаций?

Вот мой код:

действия

Контроллер:

@RequestMapping(value = "/books/documentType.do", method = RequestMethod.GET) 
public String getDocType(
     @RequestParam(required = false, value = "id") Long id, 
     ModelMap model) { 

    DocTypeDTO docType = new DocTypeDTO(); 
    if (id != null) 
     docType = docTypeConverter.getDTO(id); 
    model.addAttribute("docType", docType); 
    return "/books/documentType"; 
} 

@RequestMapping(value = "/books/documentType.do", method = RequestMethod.POST) 
public String setDocType(
     @ModelAttribute("docType") DocTypeDTO docType, 
     BindingResult result, 
     SessionStatus sessionStatus 
) { 
    docTypeValidator.validate(docType, result); 
    if (result.hasErrors()) 
     return "/books/documentType"; 
    else { 
     docTypeConverter.saveDTO(docType); 
     sessionStatus.setComplete(); 
     return "redirect:/books/documentTypes.do"; 
    } 

} 

Awfully markuped форма:

<form:form method="post" commandName="docType" id="editForm"> 
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#dbdbdb"> 
    <tr> 
     <td></td> 
     <td> 
      <table border="0" cellspacing="0" cellpadding="0" width="100%"> 
       <tr> 
        <td class="spacer"><img src="/images/spacer.gif" width="116" height="1" border="0"/></td> 
        <td class="spacer"><img src="/images/spacer.gif" width="216" height="1" border="0"/></td> 
       </tr> 

       <tr> 
        <td class="form-cell-text-underlined">Отображать на сайте</td> 
        <td colspan="2"> 
         <form:checkbox path="shownOnSite"/> 
        </td> 
       </tr> 

       <tr> 
        <td class="form-cell-text-underlined">Международный</td> 
        <td colspan="2"> 
         <form:checkbox path="international"/> 
        </td> 
       </tr> 

       <tr> 
        <td class="form-cell-text-underlined">Внутренний код</td> 
        <td colspan="2"> 
         <form:input path="internalCode"/> 
        </td> 
       </tr> 

       <tr> 
        <td class="form-cell-text-underlined">Код</td> 
        <td colspan="2"> 
         <form:input path="code"/> 
         <form:errors path="code"/> 
        </td> 
       </tr> 

       <tr> 
        <td class="form-cell-text-underlined">Код IATA</td> 
        <td colspan="2"> 
         <form:input path="codeIATA"/> 
        </td> 
       </tr> 

       <tr> 
        <td class="padded-underlined">Название</td> 

        <td colspan="2"> 
         <form:input path="name"/> 
         <form:errors path="name"/> 
        </td> 
       </tr> 

       <tr> 
        <td class="padded-underlined">Название(Англ.)</td> 

        <td colspan="2"> 
         <form:input path="nameEn"/> 
        </td> 
       </tr> 

       <tr> 
        <td colspan="3"> 
         <input type="submit" value="Сохранить"> 
        </td> 
       </tr> 

      </table> 
     </td> 
     <td></td> 
    </tr> 
</table> 

Спасибо!

+0

Вам следует подумать о принятии ответа PaddyC, потому что это правильно. –

ответ

13

С Spring MVC 3, это разумно прямолинейно, только с JSP и контроллером. Например, эти две кнопки отправки ручка «предыдущие» и «сохранить» действия:

<input value="Save" name="save" type="submit" id="btnSave" class="submit_button"> 
<input value="Previous" name="previous" type="submit" id="btnPrevious" class="submit_button"> 

Затем в контроллере, вы принимаете имя входа как парам в отображении запроса, а также с контроллером «адрес» :

@RequestMapping(value="thisForm.form", params="save") 
public String save() { 
    // save 
} 

@RequestMapping(value="thisForm.form", params="previous") 
public String doPreviousStuff() { 
    // get mapping for previous page and return 
} 
1

Если вы действительно хотите две кнопки отправки на форме, вы можете сделать это с JavaScript, как это (с помощью JQuery в данном примере):

<SCRIPT language=JavaScript> 
    function remove() { 
    $('#editForm').attr("action", "documentTypeRemove.do"); 
    $("#editForm").submit(); 
    } 
</SCRIPT> 

... 

<button type="button" onclick="remove();">Remove</button> 

Затем создайте еще один RequestMapping в контроллере:

@RequestMapping(value = "/books/documentTypeRemove.do", method = RequestMethod.POST) 
public String removeDocType(...  
Смежные вопросы