Spring MVC Controller重定向到不同的控制器并保留信息

时间:2016-03-11 18:15:48

标签: spring redirect model-view-controller controller

我想要实现的目标:

当用户点击他们感兴趣的媒体资源上的兴趣按钮时,他们将被重定向到同一页面。只有这一次,会有一个标签表明“您已表达了对此属性的兴趣”,该标签将显示给用户。我已设法重定向到第二页,但“你表达了对这个属性的兴趣”这个词没有出现。

到目前为止我所拥有的:

当用户单击属性JSP页面上的“兴趣”按钮时,它们将被定向到下面的Controller。此Controller处理请求并获取从数据库中单击的属性。然后我为该属性设置“setExpressInterest”布尔值为true。

  @RequestMapping(value="/expressInterest/{propertyId}", method = RequestMethod.GET)
  public String expressInterest(@PathVariable int propertyId, SecurityContextHolderAwareRequestWrapper request){

  Property property = propertyRepo.findById(propertyId);
  property.setExpressInterest(true);
  return "redirect:/property/{propertyId}";

}

我将请求重定向到下面的下一个控制器:

下面的Controller,从第一个Controller获取属性id。我将它设置为等于属性实例。

 @RequestMapping(value = "/property/{propertyId}")
public ModelAndView viewProperty(@PathVariable int propertyId, SecurityContextHolderAwareRequestWrapper request) {

   ModelAndView mav = new ModelAndView("property");

   Property property = propertyRepo.findById(propertyId);



      if (property.isExpressInterest() == true){
        mav.addObject("isExpress", true);
      }


    mav.addObject("property", property);
    return mav;  
 }

 <div>
          <c:if test="${property.expressInterest}">
          			<strong>You have expressed interest in property</strong>
          </c:if>
          </div>

如果您有任何关于如何解决此问题的帮助,我将不胜感激。或任何有用文章的链接。

1 个答案:

答案 0 :(得分:0)

我忘了添加属性propertyRepo.save(property)。这意味着数据未保存到仓库中。

   @RequestMapping(value="/expressInterest/{propertyId}", method = RequestMethod.GET)
  public String expressInterest(@PathVariable int propertyId,   SecurityContextHolderAwareRequestWrapper request){
  Property property = propertyRepo.findById(propertyId);
  property.setExpressInterest(true);
  propertyRepo.save(property);
  return "redirect:/property/{propertyId}";

}