【问题标题】:Why @Requestparam returns null, but value is filled?为什么@Requestparam 返回null,但值已填充?
【发布时间】:2020-08-10 19:30:30
【问题描述】:

我有 Java 和 Spring

    public String addStudent(@RequestParam(value = "selStud") Long idS,
                             @RequestParam(required = false, value = "selDisc") Long idD,
                             ModelMap modelMap){
        long selectedId = idS;
        long selDiscipline = idD;
        return "redirect:/";
    }

还有这个 HTML:

<form action="#" th:action="@{/add-student}" class="new-student-form" method="post" >
<ul name="selDisc" type="none" th:each="discipline : ${disciplineList.disciplines}" th:value="${discipline.id}">
                <div th:onclick="|javascript:showDiv('${discipline.id}');|"
                   th:text="${discipline.name}"
                     th:value="${discipline.id}"
                   class="discipline-name" >..
                </div>
                <div th:id="${discipline.id}">
                    <ul  class="discipline-info"
                        th:unless="${#lists.isEmpty(discipline.students)}">
                        <li th:each="student : ${discipline.students}"
                            th:text="${student.student}" class="studName" name="studName">
                            </li>
                        </li>
                    </ul>
                    <div name="studOption" th:id="${discipline.id}">
                        <select name="selStud" required >
                            <option th:each="student : ${students}"
                                    th:value="${student.id}"
                                    th:id="${student.id}"
                                    name="studentOption"
                                    th:text="${student.student}">Select</option>
                        </select>
                        <input type="submit" class="add-student-to-disc" value="Добавить в дисциплину">
                    </div>
                </div>
            </li>
        </ul>
</form>

使用@RequestParam(value = "selStud") Long idS,我从选项中获得th:value="${student.id}",从名称为“selStud”的选择中获得。示例selectedId = 5

但是对于@RequestParam(required = false, value = "selDisc") Long idD,我从&lt;ul name="selDisc"&gt; 得到NULL。而@RequestParam(value = "selDisc") Long idD 不起作用,因为 selDisc 一直返回 null。 我有一个错误“所需的长参数不存在”

我想获得纪律 ID,我做错了什么?

【问题讨论】:

  • 因为在调用selDisc的请求中大概没有参数
  • ul 不是 &lt;form&gt; 元素,所以它不会发布任何内容,即使你给它 namevalue 属性。如果您想发布一个名为 selDisc 且值为 discipline.id 的表单字段,请使用 &lt;input type="hidden" ... 元素。

标签: java spring spring-boot spring-mvc thymeleaf


【解决方案1】:

我把 &lt;input name="selDisc" th:value="${discipline.id}" type="hidden"&gt; 在第一个 div 之后。

但它的作用是偶然的。

【讨论】:

  • 我认为这是某种评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 2014-11-02
  • 2020-11-24
  • 1970-01-01
  • 2016-12-28
  • 2021-04-25
  • 1970-01-01
相关资源
最近更新 更多