我正在尝试用从javascript到spring mvc后端的ajax调用做一个帖子,但我的控制器似乎没有收到模型属性



这是我的代码

控制器:

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

最新更新