我用lombok省略了Java bean的getter和setter方法。 这是《 Spring in Action 5 Edition》一书中的一个例子
一个Java bean:
@Data
public class Taco {
@Size(min=1, message="You must choose at least 1 ingredient")
private List<String> ingredients;
}
控制器:
@PostMapping
public String processDesign(@Valid @ModelAttribute("design") Taco design, Errors errors, Model model) {
if (errors.hasErrors()) {
return "design";
}
System.out.println(design.getIngredients());
return "redirect:/orders/current";
}
渲染视图:
<form method="POST">
<input name="ingredients" type="checkbox" value="FLTO">
<span>Flour Tortilla</span><br>
<input name="ingredients" type="checkbox" value="GRBF">
<span>Ground Beef</span><br>
</form>
当我提交表单并且未选中任何复选框时,验证不起作用,在控制器中,errors.hasErrors()
为假,design.getIngredients()
为null
然后我更改java bean中的代码:
private List<String> ingredients=new ArrayList<>();
验证成功,用户将收到消息:“您必须选择至少一种成分”
但是我的问题是:即使我已经使用过lombok,也应该实例化一个字段,尤其是对于参考字段吗?是否可以使用注释来做到这一点?
答案 0 :(得分:0)
您可以定义null构造函数,并在其中初始化public void showHideCardPreview(int id) {
FragmentManager fm = getSupportFragmentManager();
Bundle b = new Bundle();
b.putInt(Constants.CARD, id);
cardPreviewFragment.setArguments(b);
FragmentTransaction ft = fm.beginTransaction()
.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
if (!cardPreviewFragment.isAdded()){
ft.add(R.id.full_screen_container, cardPreviewFragment);
ft.show(cardPreviewFragment);
} else {
if (cardPreviewFragment.isHidden()) {
Log.d(TAG,"++++++++++++++++++++ show");
ft.show(cardPreviewFragment);
} else {
Log.d(TAG,"++++++++++++++++++++ hide");
ft.hide(cardPreviewFragment);
}
}
ft.commit();
}
。龙目岛构造函数将被覆盖。
List