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

Spring-Thymeleaf:从模态形式发布数据

楚博雅
2023-03-14

我需要将数据从html表单发布到数据库中。我有带有springboot和thymeleaf的gradle项目。我有java对象类女巫有id、名称、描述、老师和分钟。在html中,我使用模态形式询问除id之外的所有内容。

主要的html

<!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Class Scheduler</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <link rel="stylesheet" type="text/css" href="webjars/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"/>
        <script type="text/javascript" src="webjars/jquery/3.2.1/jquery.min.js"></script>
        <script type="text/javascript" src="webjars/bootstrap/4.0.0-beta.2/js/bootstrap.bundle.min.js"></script>

    </head>
    <body>
    <div class="container">
        <h2>Class Scheduler</h2>
        <div class="text-right"> 
            <button type="button" class="btn btn-success" data-toggle="modal" data-target="#addClassModal">Add new class</button>
        </div>
        <div class="modal fade" id="addClassModal" tabindex="-1" role="dialog" aria-labelledby="addClassModalLabel" aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="addClassModalLabel">Add new class</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <form th:action="@{/addClass}" th:object="${class}" method="post">
                            <div class="form-group">
                                <label for="name">Name:</label>
                                <input type="text" class="form-control" id="name" th:value="*{name}"/>
                            </div>
                            <div class="form-group">
                                <label for="description">Description:</label>
                                <input type="text" class="form-control" id="description" th:value="*{description}"/>
                            </div>
                            <div class="form-group">
                                <label for="teacher">Teacher:</label>
                                <input type="text" class="form-control" id="teacher" th:value="*{teacherName}"/>
                            </div>
                            <div class="form-group">
                                <label for="minutes">Minutes:</label>
                                <input type="number" class="form-control" id="minutes" th:value="*{timeMinutes}"/>
                            </div>
                            <input type="submit" value="Submit" />
                        </form>
                    </div>
                </div>
            </div>
            </div>
        </div>
    </body>
</html>

我的控制器看起来像这样:

@Controller
public class ScheduleController {

    @Autowired
    private ClassService classService;
    @Autowired
    private StudentService studentService;



    @RequestMapping(value = "/addClass", method = RequestMethod.POST)
    public String addClass(@RequestAttribute("class") Class newClass, Model model) {
        classService.addClass(newClass);
        return "main";
    }

我得到的错误消息是:java.lang.IllegalStateException:BindingResult和bean名称“class”的普通目标对象都不能作为请求属性使用。

我做错了什么?

编辑:我的ClassService如下所示:

@Service
public class ClassService{

    private static final BeanPropertyRowMapper<Class> CLASS_ROW_MAPPER = BeanPropertyRowMapper.newInstance( Class.class );

    @Autowired
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;


    public void addClass(final Class newClass) {
        MapSqlParameterSource in = new MapSqlParameterSource();
        in.addValue("id", newClass.getId());
        in.addValue("name", newClass.getName());
        in.addValue("description", newClass.getDescription());
        in.addValue("teacher_name", newClass.getTeacherName());
        in.addValue("time_minutes", newClass.getTimeMinutes());
        namedParameterJdbcTemplate.update("INSERT INTO class(name, description, teacher_name, time_minutes) values(:name,:description,:teacher_name,:time_minutes)", in);
    }

共有1个答案

梁韬
2023-03-14

这儿呢

 public String addClass(@RequestAttribute("class") Class newClass, Model model) {

使用ModelAtort而不是Request estAtort

 public String addClass( @ModelAttribute("class") Class newClass, Model model) {

此外,在控制器类中,返回与ModelAttribute关联的类的实例

@ModelAttribute(value = "class")
public Class getClass()
{
    return new Class();
}
 类似资料:
  • 问题内容: 我有一个使用来获取用户电子邮件的页面,我想将其添加到订阅者列表(这是Django模型)。这是该代码的模式代码: 我试图查看Twitter Bootstrap文档,但这确实很小。我想将数据发送到POST`请求​​。 这是最基本的。我用来比较电子邮件的格式,然后再存储电子邮件ID。因此,如果电子邮件匹配,则视图返回。因此,我想通知用户有关它本身的信息。但是我真的不知道该怎么做。有人请帮忙。

  • 我正在使用thymeleaf和Spring MVC进行Post/Redirect/Get操作,效果很好。除了当我进入页面进行获取和刷新外,ModelAttribute也会重置。这是我正在做的类似事情的一个片段。 我的对象只是一个简单的java bean,具有一个名为

  • 尝试加载时出现解析错误。 我找不到任何错误在我的模板,所以为什么我有这个错误? 文件static包含文件夹css和图片,带有jQuery、js和bootstrap 代码布局index.html: mon fichier pom.xml: 日志中的错误: 当运行我的Spring Boot应用程序时,我得到一个错误。我想看到我的模板仪表板开始我的项目如何localhost:8585/devellope

  • 问题内容: 我有一个模块,其中有我的XSD模式,其中一个模式可以使用模式位置内的相对路径引用另一个模式: 在这里,我还使用xjc从这些xsd模式生成Jaxb bean。 现在,我有了一个使用spring-ws(2.0.4)实现我的Web服务的模块。我想使用 静态WSDL 并将其与xsd模式一起发布,其中模式位置将转换为URL,例如“ http://myerver.url.com/my.xsd”。

  • 我将需要初始化一个'n'数量的类,将有一个随机值附加到他们从1到100。 我知道如何创建一个介于1和100之间的随机值,但我如何使所有的值都落在一个正态分布模式?

  • 我正在尝试使用spring应用程序的Thymeleaf模板发送邮件,我在这里引用https://github.com/Thymeleaf/thymeleafexamples-springmail/ 我没有得到任何错误,但它仍然不工作...我使用相同的代码给在github仍然没有运气...谁能建议如何做到这一点?? 下面是用来发送邮件的方法。 如果我删除使用thymeleaf创建html正文的行,并