这是我的代码
控制器:
@RequestMapping(value = "/trip/mail.html", method = RequestMethod.POST)
public @ResponseBody String mailForm(@ModelAttribute(value="formulier") String formulier, @ModelAttribute(value="orgMessage") String orgMessage, @ModelAttribute(value="tripID") String tripID, BindingResult result) {
ModelMap mailModel = new ModelMap();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
mailModel.addAttribute("title", "Trip update");
mailModel.addAttribute("subtitle1", "Message from organiser");
mailModel.addAttribute("message", orgMessage);
mailModel.addAttribute("subtitle2", "The following trip changes occured");
mailModel.addAttribute("text", formulier);
mailModel.addAttribute("date", format.format(new Date()));
SimpleMailMessage msg = new SimpleMailMessage(message);
msg.setTo("kdgteamf@gmail.com");
tripService.sendMail(mailModel, msg);
return "Congrats!";
javascript:
var formInhoud = $("#changes").html();
var organiserMessage = $("#Message").val();
var tripID = $("#hiddenTripID").val();
$("#dialog-message").css("cursor", "wait");
$.post("/ProjectTeamF-1.0/trip/mail.html",
{ formulier: formInhoud, orgMessage: organiserMessage, tripID: tripID},
function (data) {
$("#viewTripForm").submit();
}
);
我正试图从我的后台springmvc发送一封电子邮件,这一切都可以,但我的帖子有问题。当我执行javascript时,它工作得很好,"mailForm"在我的控制器中正常工作(我的电子邮件是发送的)。唯一的问题是,我似乎没有收到这3个模型属性,其中包含我想添加到邮件中的信息。当我在控制台中打印它们时,那里只是空的,我确信javascript中的信息是正确的。有人看到我在这里做错了什么吗?
我是springmvc、rest服务等领域的新手,也是stackoverflow的新手,所以我希望我的问题足够清楚,并为我糟糕的英语感到抱歉。
控制器方法中的@RequestParam("formulier")而不是modelattribute可以解决您的问题。而是创建一个表示数据的对象/容器/bean,并且这个bean应该有发布的字段。然后可以将这个bean创建为ModelAttribute。例如,容器bean FormBean带有字段formulier等,带有适当的getter和setter。然后在控制器方法中使用actionMethod(@ModelAttribute("beanInJsp")FormBean FormBean)