我可以参考当前里面的对象吗?

时间:2015-12-26 23:24:01

标签: java angularjs oop session jpa

新手在这里。因此,我正在使用java持久性来制作一个粗俗的婚礼网站,将客人(邀请)映射到婚礼。由于每个邀请都可以参加多个婚礼,我已经制作了一个方法来映射它们(使用Java流)并返回与之相关的婚礼,如下所示:

@RequestMapping("/invites")
public List<Wedding> invitesList(HttpSession session) {
    String email = (String) session.getAttribute("email");
    return invites.findByEmail(email).stream()
            .map(invite -> {
                return invite.wedding;
            }).collect(Collectors.toCollection(ArrayList<Wedding>::new));
}

这成功返回婚礼列表。但是,在网站上您可以选择一个婚礼,并选择邀请更多人参加婚礼。网站上的下一个视图要求提供邀请对象中的信息(字符串用户名,字符串电子邮件地址等)但是,我不确定如何参考婚礼我&#39; m&#34;内部& #34;从而使邀请和正确的婚礼之间的关联。后续路线目前正如此编写,并将邀请添加到数据库,然后批判性地在邀请和婚礼之间建立正确的关联,然后返回婚礼特定邀请列表,以显示所有被邀请的人婚礼:

@RequestMapping(path = "/create-guest", method = RequestMethod.POST)
public List <Invite> guestList(@RequestBody Invite invite){
    Wedding wedding = weddings.findOne(Integer.valueOf(?)); 
    //unsure how to get weddingid here...
    wedding.invite = invite;
    invites.save(invite);
    return (List) wedding.invite;
}

我怎么去参加婚礼?我无法将其存储在会话中。有没有办法可以参考我目前的婚礼?我无法在上一页中进行设置,因此我无法在后一页中将其删除。我的前端同事(使用angular)说他可以在邀请对象中传递婚礼ID,但是我的对象类中的字段不允许它。我的问题是:我如何将所选婚礼的婚礼ID传递给随后的邀请页面?

1 个答案:

答案 0 :(得分:0)

我假设你根据你的注释使用Spring MVC。

您可以使用路径变量。因此,不要发布到/ create-guest的婚礼ID 123,而是发布到/ create-guest / 123。然后,您可以使用@PathVariable批注来访问它。

@RequestMapping(path = "/create-guest/{weddingId}", method = RequestMethod.POST)
public List <Invite> guestList(@PathVariable(value="weddingId") String weddingId, @RequestBody Invite invite){
    Wedding wedding = weddings.findOne(Integer.valueOf(weddingId)); 
    wedding.invite = invite;
    invites.save(invite);
    return (List) wedding.invite;
}

如果您要创建RESTful Web服务,请提出建议。我不是关于REST约定的专家,但我认为它会更多&#34; REST喜欢&#34;你有这个网址如下:

/婚礼/ 123 /客

如果您发布到该网址,则应为婚礼ID 123创建一个访客。

显然这是惯例而非要求。它在任何一种方式都可以正常工作,但是如果你遵循REST约定,其他开发人员可能会发现你的api更容易使用。