使用弹簧形式时无法从类型[null]转换为异常

问题描述 投票:0回答:1

我想在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:无法将空值分配给原始类型]

java spring primitive-types
1个回答
0
投票

您的类属性命名为quizId,在您的表单中,您将quiz_id用作name属性,该属性应为quizId

这就是为什么您会得到null

© www.soinside.com 2019 - 2024. All rights reserved.