我想在Spring控制器类中使用从html表单输入的数字,但是我一直收到typeMismatch错误。我确实试图找到错误,但是我不知道该如何更改才能使代码正常工作。有谁知道如何摆脱这个错误?
问题出在“ quiz_id”输入上
这是我的表格
<form th:action="@{/addQuestion}" th:object="${addQuestionForm}" method="post">
<label for="pytanie">Question</label>
<input type="text" id="pytanie" name="pytanie" autofocus="autofocus" required/>
<br>
<label for="odpowiedz">Answer</label>
<input type="text" id="odpowiedz" name="odpowiedz" autofocus="autofocus" required/>
<br>
<input type="number" id="quiz_id" name="quiz_id" />
<!-- th:value="${quiz_id}"-->
<input type="submit" value="Add Question">
</form>
这里是AddQuestionForm类
public class AddQuestionForm {
private String pytanie;
private String odpowiedz;
private long quizId;
public AddQuestionForm(String pytanie, String odpowiedz, long quizId) {
this.pytanie = pytanie;
this.odpowiedz = odpowiedz;
this.quizId = quizId;
}
public String getPytanie() {
return pytanie;
}
public void setPytanie(String pytanie) {
this.pytanie = pytanie;
}
public String getOdpowiedz() {
return odpowiedz;
}
public void setOdpowiedz(String odpowiedz) {
this.odpowiedz = odpowiedz;
}
public long getQuizId() {
return quizId;
}
public void setQuizId(long quizId) {
this.quizId = quizId;
}
}
这里是控制器中的post方法
@RequestMapping(value = "/addQuestion", method = RequestMethod.POST)
public String create(@ModelAttribute(name = "addQuestionForm")AddQuestionForm addQuestionForm, Model model){
long quizID = addQuestionForm.getQuizId();
return "addQuestion";
}
我一直收到此错误:
发生意外错误(类型=错误的请求,状态= 400)。 对象=“ addQuestionForm”的验证失败。错误计数:1 org.springframework.validation.BindException:org.springframework.validation.BeanPropertyBindingResult:1个错误 字段“ quizId”上的对象“ addQuestionForm”中的字段错误:拒绝的值[null];代码[typeMismatch.addQuestionForm.quizId,typeMismatch.quizId,typeMismatch.long,typeMismatch];参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[addQuestionForm.quizId,quizId];参数[];默认消息[quizId]];默认消息[未能将'null'类型的值转换为所需的'long'类型;嵌套的异常是org.springframework.core.convert.ConversionFailedException:无法将值'null'的类型从[null]转换为[long];嵌套的异常为java.lang.IllegalArgumentException:无法将空值分配给原始类型]
您的类属性命名为quizId,在您的表单中,您将quiz_id用作name
属性,该属性应为quizId。
这就是为什么您会得到null