带有选择(下拉)的表格不显示错误代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有选择(下拉)的表格不显示错误代码相关的知识,希望对你有一定的参考价值。

我有一个包含用于按ID列出系统中所有教师的选择的表格,但是它不能正常工作。

这里是表单的代码部分

和相应的路径控制器请求

我正在使用Thymeleaf和Spring Boot,所以'pr'对应于教师资源库的变量的名称。

<form th:action="@/professor/updateProfessor/"  method="post" th:object="$professor">
        <div class= "form-group">
        <label th:for = "id">Id</label>
        <select th:field="*id">
            <option
            th:value = "$id"
            th:text = "$professor.id">
            </option>
            </select>
        </div>      
        <input type = "submit" value = "Add Professor">Save</button>
    </form>


@GetMapping(value = "/selecionaProfessor")
@ResponseBody
public ModelAndView professorSelecao()
    ModelAndView atualizaProfessor = new ModelAndView("/atualizaProfessor");
    atualizaProfessor.addObject("Add Professor");
    return atualizaProfessor;


@PostMapping(value = "/selecionaProfessor")
@ResponseBody
public ModelAndView selecaoProfessor()
    ModelAndView pagSucesso = new ModelAndView("/pagSucesso");

    pagSucesso.addObject(pr.findAll());
    return pagSucesso;

答案

从您的控制者,按照以下说明发送教授列表到您的视图。在这里,您将教授列表与“ professorList”相关联:

model.addAttribute("professorList", pr.findAll());

然后访问百里香中“ professorList”上方的内容(类似于):

<option th:each="professor: $professorList" th:value="$professor"> </option>

不是完整的代码,但我希望您有个入门的想法。

举个完整的例子,看看herehere

另一答案

首先什么不起作用?因为我看到了很多可能无法正常工作的东西,也许是因为我没有看到全部代码,或者我猜到了一些东西,让我们来看看

当您使用输入到控制器时

 localhost:8080/professor/selecionaProfessor

您是否希望使用您填写正确的表格? (下一个代码)

<form th:action="@/professor/updateProfessor/"  method="post" th:object="$professor">
    <div class= "form-group">
    <label th:for = "id">Id</label>
    <select th:field="*id">
        <option
        th:value = "$id"
        th:text = "$professor.id">
        </option>
        </select>
    </div>      
    <input type = "submit" value = "Add Professor">Save</button>
</form>

因为这是正确的,您的方法有问题:

@GetMapping(value = "/selecionaProfessor")
@ResponseBody
public ModelAndView professorSelecao()
   ModelAndView atualizaProfessor = new ModelAndView("/atualizaProfessor");
   atualizaProfessor.addObject("Add Professor");
return atualizaProfessor;

您将收到一条错误消息:

Neither BindingResult nor plain target object for bean name 'professor' available as request attribute

所以您缺少添加关键教授和列表的位置,所以请更改:

   atualizaProfessor.addObject("Add Professor");

带有类似内容:

atualizaProfessor.addObject("professor",   someListOfProfessorHereFromTheService (List<Professor>));

并且如果您的profesor对象具有您在表单上拥有的属性,它应该可以工作。

现在让我们假设它以前曾经起作用,而错误不是那样。

当您输入表单时,如果您在此处看到:

 form th:action="@/professor/updateProfessor/" 

您正在使用updateProfessor,但在您的控制器上看不到

  @PostMapping(value = "/selecionaProfessor")

因此,我认为您应该更改html页面或控制器内的url映射,并使用与错误1相同的映射,如我在第一个错误中所示,使用键和值映射对象,并将列表迭代到html中] >

希望有帮助

以上是关于带有选择(下拉)的表格不显示错误代码的主要内容,如果未能解决你的问题,请参考以下文章

闪亮的不显示带有 HTML/JSON 错误消息的表格

选择时不显示 C# 下拉列表项颜色

layui表格里面下拉框不显示

表格不保存

根据当前时间显示下拉列表的年月,需要显示之前六个月,用JS怎么来弄?

将鼠标悬停在带有显示的下拉菜单上:表格在 IE 中不起作用