0

同様の質問がここで何度か提起されたことは知っていますが、これらの投稿はすべて役に立たず、まだ修正できていません。

これが私のコントローラーの一部です:

@RequestMapping("/contacts") 
@Controller 
public class ContactController {
final Logger logger = LoggerFactory.getLogger(ContactController.class); 

@Autowired
private ContactService contactService;

@Autowired 
MessageSource messageSource;

@RequestMapping(value = "/{id}", params = "form", method = RequestMethod.GET) 
public String updateForm(@PathVariable ("id") Long id, Model uiModel) { 
    uiModel.addAttribute("employee", employeeService.findById(id)); 
    logger.info("Updating employee form, id: " + id);       

    return "staff/update";
}

@RequestMapping(value = "/{id}", params = "form", method = RequestMethod.POST) 
public String update(@ModelAttribute("employee") Employee employee, BindingResult  bindingResult, Model uiModel, HttpServletRequest httpServletRequest, RedirectAttributes redirectAttributes, Locale locale) { 

logger.info("Updating employee");
if (bindingResult.hasErrors()) { 
    uiModel.addAttribute("message", new Message("error", messageSource.getMessage("employee_save_fail", new Object[]{}, locale))); 
uiModel.addAttribute("employee", employee);

return "staff/update"; 
}

uiModel.asMap().clear(); 
redirectAttributes.addFlashAttribute("message", new Message("success", messageSource.getMessage("employee_save_success", new Object[]{}, locale)));
employeeService.update(employee); 

return "redirect:/staff/" + UrlUtil.encodeUrlPathSegment(employee.getId().toString(), httpServletRequest); 
}

ここに私の edit.jspx の一部があります:

<form:form modelAttribute="emlpoyee" id="employeeUpdateForm" method="post">
    <c:if test="${not empty message}"> 
        <div id="message" class="${message.type}">${message.message}</div> 
    </c:if> 

    <form:hidden path="firstName" />
    <form:hidden path="lastName" /> 
    <form:hidden path="salary" /> 
    <form:hidden path="birthDate" /> 
    <form:hidden path="departmentId" /> 
    <form:hidden path="active" /> 

    <button type="submit">Save</button>
        <button type="reset">Reset</button>
</form:form> 

form:input path=.... または form:label path=.... タグを配置しても、結果は同じになります:(。

補助クラス Message と UrlUtil はシンプルで簡単です。従業員クラスには、必要なすべてのゲッターとセッターがあり、それらには正しい名前と署名があります。

updateForm メソッドは問題なく動作します。

これらすべての form:hidden タグにコメントすると、適切に機能し始め、2 つのボタンを含む画面が表示されます...しかし、実際にはそこに多数の入力が必要です。

どんな親切な助けや援助にも感謝します。

4

1 に答える 1