当前位置: 首页 > 知识库问答 >
问题:

Thymeleaf和Spring MVC中的表单绑定错误

逄俊力
2023-03-14

我从胸腺嘧啶开始。我只是复制了一个例子,并根据我的需要进行了调整。然而,它并不起作用。我很感激任何帮助。

标签

@Entity 
public class Label {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "label_id")
private Long labelId;

private String label;

public Label() {
}

public Label(Long labelId, String label) {

    this.labelId = labelId;
    this.label = label;
}

public Label(String label) {

    this.labelId = null;
    this.label = label;
}


public Long getLabelId() {
    return labelId;
}

public void setLabelId(Long labelId) {
    this.labelId = labelId;
}

public String getLabel() {
    return label;
}

public void setLabel(String label) {
    this.label = label;
}

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Label)) return false;

    Label label1 = (Label) o;

    return getLabel().equals(label1.getLabel());
}

@Override
public int hashCode() {

    return Objects.hash(getLabel());
}

@Override
public String toString() {
    return "Label{" +
            "labelId=" + labelId +
            ", label='" + label + '\'' +
            '}';
} }

控制器

@Controller
public class LabelController {


private NoteHandler handler;

@Autowired
public LabelController(NoteHandler handler) {
    this.handler = handler;
}

@RequestMapping(value = "/savelabel", method = RequestMethod.GET)
public String showSaveLabelForm(Model model) {
    model.addAttribute("labelentity", new Label());
    return "labelform";
}

@RequestMapping(value = "/savelabel", method = RequestMethod.POST)
public String submitLabel(@ModelAttribute Label labelentity) {
    return "result";
}    }

labelForm.html

> <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head>
>     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
>     <title>Save a New Label</title> </head> <body> <h1>Form</h1> 
><form action="#" th:action="@{/savelabel}" th:object="${labelentity}" method="post">
>     <p>Id: <input type="text" th:field="*{labelId}" /></p>
>     <p>Label: <input type="text" th:field="*{label}" /></p>
>     <p><input type="submit" value="Submit" /> <input type="reset" 
>value="Reset" /></p> </form> </body> </html>
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Saved Label</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Result</h1>
<p th:text="'id: ' + ${labelentity.labelId}" />
<p th:text="'label: ' + ${labelentity.label}" />
<a href="/savelabel">Save another label</a>
</body>
</html>

...

共有1个答案

海新霁
2023-03-14

我有点不清楚为什么你会看到错误,因为当我尝试你的代码时,我得到了

org.springframework.expression.spel.spelevaluationexception:EL1007E:在null上找不到属性或字段“label id”

我怀疑差异在于您可能在清单中编辑了一些代码。

但是,这个问题与以下事实有关:在post请求控制器方法中,您有以下@modelattribute Label labelentity,这意味着spring将向模型映射添加一个名称为Label的属性,但是您的模板引用了labelentity,因此您需要将其更改为

@modelattribute(name=“LabelEntity”)

 类似资料:
  • 我使用Spring boot和Thymeleaf模板引擎,并尝试使用th:classappend属性为添加可选的“has error”类 但是我有这个错误 无法使用表达式“*”绑定表单错误。请检查此表达式是否在适当的上下文中执行(例如,具有th:object属性的a) 我的控制器方法 我做错了什么?

  • 本文向大家介绍SpringMVC实现数据绑定及表单标签,包括了SpringMVC实现数据绑定及表单标签的使用技巧和注意事项,需要的朋友参考一下 首先理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 但我们提交后,为了将请求信息映射到模型中,还需要手动进行格式转换,此外还借助了一个中转对象productForm,其字段名称和Produ

  • 表单项: input, textarea, select 等. 使用v-model来绑定 输入项 <input v-model="my_value" style='width: 400px'/> 就可以在代码中获取到 this.my_value的值. 表单项的完整例子 <template> <div> input: <input type='text' v-model="input

  • 本文章将介绍Thymeleaf中实现表单的语法和概念。 编辑源代码以便将产品列表中的某个数据。已经将类的对象列表设置为具有变量名称的上下文模型(参考:中的实现)。 如果要上机实践,请参考:Thymeleaf+SpringMVC5示例项目。这里不再重复创建项目的过程,这里将只介绍如何使用 Spring表达式和标签。 这里创建一个Maven Web项目: thymeleaf-tutorials ,其目

  • 我很难将表单发回控制器,因为它应该只包含用户可以编辑的对象的arraylist。 表单加载正确,但在发布时,它似乎从未真正发布任何内容。 这是我的表格: 上面的工作正常,它正确加载列表。但是,当我发布时,它返回一个空对象(大小为0)。我认为这是由于缺少,但无论如何,这里有一个控制器POST方法: 我尝试添加一个,但不管我做什么,它都会导致异常。 我试过: 我不能访问当前客户端(编译错误),我甚至不

  • 我有一个复选框,它在后端绑定了两个值。我的问题是,仅仅绑定了一个值,而将另一个值作为空值传递,也就是我的tmpltid。我如何在Thymleaf中绑定两个隐藏值,不用担心,我有一个getter和setter方法。我只需要把前面的值传过去。救命啊!!! 我的代码与此类似,但没有人对此给出答案