我正在为我的项目使用mvc spring和mysql workbench。在我的一个页面上,用户可以向商店添加评论和评级。问题是,我希望评级和评论是可选的 - 评论是,评级不是。当我像这样使用我的控制器时:
@RequestMapping(value={"/", "/shop"}, method=RequestMethod.POST)
public String kmetija11(@RequestParam(value = "rating", required = false) int mark,
@RequestParam(value = "content", required = false) String comment)
{
markDao.addMark(mark);
commentDao.addComment(comment);
return "redirect:/input";
}
我从此表单中获得评分值:
<form method="POST" action="/shop">
<div class="form-group">
<textarea class="form-control" rows="2" value="Add comment ..." name="content"></textarea>
<ul class="rate-area">
<input type="radio" id="5-star" name="rating" value="5" /><label for="5-star">5 stars</label>
<input type="radio" id="4-star" name="rating" value="4" /><label for="4-star">4 stars</label>
<input type="radio" id="3-star" name="rating" value="3" /><label for="3-star">3 stars</label>
<input type="radio" id="2-star" name="rating" value="2" /><label for="2-star">2 stars</label>
<input type="radio" id="1-star" name="rating" value="1" /><label for="1-star">1 star</label>
</ul>
<br/><br/>
</div>
<button type="submit" class="btn" >Add comment / mark</button>
</form>
所以会发生什么,如果我不放 - &gt; value =“rating”,required = false)&lt; - 它表示该参数是必需的,因为默认值为true。但是,如果我按原样放置代码,我会收到此错误:http://prntscr.com/jtppgo
如果有人知道该做什么,我会很高兴听到答案。 提前谢谢!
答案 0 :(得分:0)
这种情况正在发生,因为int是一种原始数据类型,默认值为零。
请使用包装类Integer
代替int
。
答案 1 :(得分:0)
只需将int更改为Integer即可完成。原语不能为空,对象可以..
答案 2 :(得分:0)
它不一定能解决问题。当通过HTTP协议传输值时,它不是类型,而是字符串,然后将其转换为“ Integer”则没有任何作用。因此,就我而言,我必须添加
@RequestParam (required=false, defaultValue= "10") int integerExample
所以我将默认值设置为字符串。现在它就像一种魅力:)