我有两种表单可以在两个不同的视图中联系。 一个在Home视图中,另一个在Contact-us视图中。
我想对两种表单使用相同的控制器方法。
因此,当我在主页并从此视图提交表单时,它必须保留在主页中,当我在Contact-us页面时,我提交表单它保留在页面中 接触我们。
我的问题是使用return方法。如何解决它不重定向到另一个视图,如果可能的话我不想使用两种方法。
@Controller
public class SendingController {
@Autowired
private EmailServiceImpl emailServiceImpl;
@Autowired
private MailValidator mailValidator;
/* Send HTML mail (simple) */
@RequestMapping(value = "/sendMailSimple", method = RequestMethod.POST)
public String sendSimpleMail(@Valid @ModelAttribute("mailForm") final Mail mailForm, BindingResult bindingResult)
throws MessagingException {
mailValidator.validate(mailForm, bindingResult);
if (bindingResult.hasErrors()) {
return "contact-us";
}
mailForm.setRecipientEmail("contact-test@gmail.com");
this.emailServiceImpl.sendSimpleMail(mailForm);
return "contact-us";
}
}
接触us.html
<form action="#" th:action="@{/sendMailSimple}"
th:object="${mailForm}" role="form" id="contact-form"
method="post">
...
</form>
home.html的
<form id="contact-form" method="post"
action="#" th:action="@{/sendMailSimple}"
th:object="${mailForm}" role="form">
...
</form>
答案 0 :(得分:2)
我认为你已经添加了一个参数来区分这两个视图,假设参数被称为 viewType ,那么你可以按照以下步骤进行:
接触us.html
<form action="#" th:action="@{/sendMailSimple}"
th:object="${mailForm}" role="form" id="contact-form"
method="post">
<input type="hidden" name="viewType" value="contact-us"/>
...
</form>
home.html的
<form id="contact-form" method="post"
action="#" th:action="@{/sendMailSimple}"
th:object="${mailForm}" role="form">
<input type="hidden" name="viewType" value="home"/>
...
</form>
因此在控制器中我们可以获得 viewType 参数:
@RequestMapping(value = "/sendMailSimple", method = RequestMethod.POST)
public String sendSimpleMail(@Valid @ModelAttribute("mailForm") final Mail mailForm, String viewType,BindingResult bindingResult)
throws MessagingException {
mailValidator.validate(mailForm, bindingResult);
if (bindingResult.hasErrors()) {
return "contact-us";
}
mailForm.setRecipientEmail("contact-test@gmail.com");
this.emailServiceImpl.sendSimpleMail(mailForm);
if(viewType.equals("contact-us")){
return "contact-us"
}else{
return "home";
}
//return viewType;can also return the viewType directly
}