我想要实现的目标:
当用户点击他们感兴趣的媒体资源上的兴趣按钮时,他们将被重定向到同一页面。只有这一次,会有一个标签表明“您已表达了对此属性的兴趣”,该标签将显示给用户。我已设法重定向到第二页,但“你表达了对这个属性的兴趣”这个词没有出现。
到目前为止我所拥有的:
当用户单击属性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>
如果您有任何关于如何解决此问题的帮助,我将不胜感激。或任何有用文章的链接。
答案 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}";
}