2 回答
TA贡献1772条经验 获得超8个赞
看起来像一个未完全初始化的对象。检查您的 createQuestion 服务方法,并确保在将问题传递给控制器之前设置了问题的每个必填字段。仅该表单并没有所有必要的字段。
TA贡献1840条经验 获得超5个赞
我建议应用 MVVC 模式将您的业务对象与您的视图对象分开。
您希望仅从模型属性对象中的视图接收字符串。
您的实体对象包含标签列表和答案列表 => 它们的建模方式不同,同一类的使用很困难,并且存在许多潜在的错误。
在您的情况下,最好仅使用字符串创建一个单独的视图类并将它们转换为您的实体对象。
例子 :
public class QuestionModelAttribute {
private String tags;
private String answers;
.....
}
并且您的方法将收到:
@PostMapping("/questions/new")
public String processQuestion(@Valid @ModelAttribute("question") QuestionModelAttribute questionModelAttribute, BindingResult result) {
Questions question = questionsService.convertQuestion(questionModelAttribute);
questionService.save(question);
..
}
您的视图将在模型中收到一个 QuestionModelAttribute
<form:form action="/questions/new" method="post" modelAttribute="questionModelAttribute">
这种模式在视图和模型之间提供了健康的解耦。
添加回答
举报