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

使用Spring MVC将数据从Thymeleaf表单保存到数据库时出现问题

王宏深
2023-03-14

我刚刚开始学习SpringMVC。我试图将一些数据从Thymeleaf表单保存到存储库,这扩展了CrudRepository。不幸的是,数据没有显示。

当我进入结果页面时,我看到使用的ID,但没有键入要形成的数据。哪里出了错?

这是控制器

package com.jtm.twiservice.controller;
import com.jtm.twiservice.Main;
import com.jtm.twiservice.model.Customer;
import com.jtm.twiservice.repository.CustomerRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

@Controller
public class CustomerClientController {
private static final Logger myLog = LoggerFactory.getLogger(Main.class);

@Autowired
private CustomerRepository customerRepository;

@GetMapping("/customer")
public String customerForm(Model model) {
    model.addAttribute("customer", new Customer());
    return "customer";
}

@PostMapping("/customer")
public String createCustomer(Customer customer, Model model) {
    customerRepository.save(customer);
    return "customer";
}

@GetMapping("/customers")
public String getCustomers(Model model) {
    model.addAttribute("customers", customerRepository.findAll());
    return "customers;
}
}

`型号:

package com.jtm.twiservice.model;
import org.springframework.beans.factory.annotation.Autowired;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Customer {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String firstName;
private String lastName;
private String email;
private String schoolForm;

public Customer() {}

public Customer(String firstName, String lastName, String email, String schoolForm) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
    this.schoolForm = schoolForm;
}

@Override
public String toString() {
    return String.format(
            "Customer[id=%d, firstName='%s', lastName='%s', email='%s', schoolForm='%s']",
            id, firstName, lastName, email, schoolForm);
}

public Long getId() {
    return id;
}

public String getFirstName() {
    return firstName;
}

public String getLastName() {
    return lastName;
}

public String getEmail() {
    return email;
}

public String getSchoolForm() {
    return schoolForm;
}
}

存储库:

package com.jtm.twiservice.repository;

import com.jtm.twiservice.model.Customer;
import org.springframework.data.repository.CrudRepository;

public interface CustomerRepository extends CrudRepository<Customer, Long> { }

表格摘录:

        <form action="#" th:action="@{/customer}" th:object="${customer}" method="post">
            <p class="text"><label>first name:</label>  <input type="text" th:field="*{firstName}" /></p>
            <p class="text"><label>last name:</label> <input type="text" th:field="*{lastName}" /></p
            <p class="text"><label>school form:</label> <input type="text" th:field="*{schoolForm}" /></p>
            <div class="text">email: <input type="text" th:field="*{email}" /></div>
            <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /> </p>

        </form>

并从结果模板中提取:

<td th:text="${customer.id}">customer ID</td>
<td th:text="${customer.firstName}">first name</td>
<td th:text="${customer.lastName}">last name</td>

共有3个答案

厍建义
2023-03-14

试试这个:

@PostMapping("/customer")
public String createCustomer(Customer customer,BindingResult result)
{
    if (result.hasErrors())
 {
            return "your error page in here";
        }
    customerRepository.save(customer);
    return "customer";
}
赏航
2023-03-14

另一种方法是使用此代码:

  model.addAttribute("customers", customerRepository.findAll());

对于结果模板:

<th:block th:each="customer : ${customers}">
  <td th:text="${customer.id}">customer ID</td>
  <td th:text="${customer.firstName}">first name</td>
  <td th:text="${customer.lastName}">last name</td>
</th:block>
司迪
2023-03-14

尝试使用

List<Customer> customers = new customerRepository.findAll();
Model.addAttribute("c" , customers);

有关更多信息,请参阅我的问题在H2数据库中存储图片Spring boot thymaf

 类似资料:
  • 我是拉威尔的新手,需要帮助。当我点击

  • 问题内容: 如何将表单数据保存在文件或本地db(也许使用AJAX)中,该文件或数据通过表单操作将数据发送到外部db? 我的表单的源代码在这里:http : //jsbin.com/ojUjEKa/1/edit 我应该对代码进行哪些更改(如果有)? 对。因此,我能够使用AJAX将数据存储到localStorage中,并希望将存储的数据发送到名为backend.php的文件中。这是我的html文件:

  • 我有两个Spark的数据帧。其中一个是使用HiveContext从配置单元表接收的: 第一个数据帧保存时没有出现问题,但当我尝试以同样的方式保存第二个数据帧()时,我得到了这个错误 文件“/home/jup-user/testdb/scripts/caching.py”,第90行,spark_df_test.write.mode(“overwrite”).format(“orc”).saveAsT

  • 我正在创建一个JavaFX应用程序,我已经很好地连接到了数据库。然而,当我从表中获取数据时,我得到了一个错误 组织。h2.jdbc。JdbcSQLException:未找到表“touch”;SQL语句:从讲座[42102-192]中选择名称 我100%确定我连接到数据库并且表肯定在那里,对为什么会这样有任何建议吗? hear是我的连接代码和我正在运行的代码,以便您可以看到 和正在运行的查询

  • 我使用以下列表从控制器填充了JSP中的下拉列表:“” 例如,我使用下拉菜单将5保存为db中thirdPartyOccupationId的值。当我重新加载页面时,值5不是选中的值。 同一段代码正在处理不同的字段,我不知道我错过了什么。 模型类: ReportClass.java 控制器.java 感谢任何指点。

  • 我目前正在做一个优惠券项目。在处理我的facade类时,我遇到一个问题,通过使用外键从表中输入客户的ID来获取客户已购买的优惠券列表。 我使用的方法是: 优惠券类别: 调用方法: 我的SQL表: Coupon_vs_Customer表仅包含2行。它们都是其他表的外键。CustomerID连接到“Customers”表,而coupon_ID连接到表“Coupons” 正如您在上面看到的,ID为1的客