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

th:字段未从th:value中抓取数据

商勇
2023-03-14

好的,所以,基本上我必须使用这个值的输入,以便将它发送到表单post以删除我想要的行...

<input type="text" th:field="*{id}" value="${customer.id}" />

但是会发生什么呢?嗯..属性th:field=“*{id}”未完成其工作,如下所示:

你可以看到的第3个是提交按钮,因为你可以看到它正确地抓取值,但不管我做什么,每次我尝试删除一些东西,它都不行,而且不是,这不是逻辑,因为在一些哑输入上硬编码了html上的id,它起作用了。

以下是html代码:

<form th:action="@{/DeleteCustomer}"
                                th:object="${customersdelete}" method="post">
                                <span th:value="${customer.id}"></span>

                                <span th:field="*{id}" value="${customer.id}"></span>

                                <input type="text" 
                                th:field="*{id}" value="${customer.id}" />

<!--                                <input type="text" th:value="${customer.id}" th:field="*{id}" /> -->

                                <input
                                    type="submit" name="btnInsert" class="btn btn-primary"
                                    value="Delete" th:value="${customer.id}" />
                            </form>

控制器

@PostMapping("/DeleteCustomer")
    public ModelAndView DeletDis(@ModelAttribute("customersdelete") Customers Customers) {
        ModelAndView mav = new ModelAndView();

        System.err.println("ID =" + Customers.getId());
        customersService.removeCustomer(Customers.getId());
        customersService.listAllCustomers();
        mav.setViewName("redirect:/" + MAIN_VIEW);
        return mav;

    }

错误:

ID =0
Hibernate: select customers0_.id as id1_0_0_, customers0_.address as address2_0_0_, customers0_.course as course3_0_0_, customers0_.firstname as firstnam4_0_0_, customers0_.lastname as lastname5_0_0_ from customers customers0_ where customers0_.id=?
2018-02-13 11:17:25.924  INFO 10812 --- [nio-8080-exec-9] c.p.s.component.RequestTimeInterceptor   : --REQUEST URL:'http://localhost:8080/DeleteCustomer'-- TOTAL TIME: '8'ms
2018-02-13 11:17:25.927 ERROR 10812 --- [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.EmptyResultDataAccessException: No class com.project.springinventory.entity.Customers entity with id 0 exists!] with root cause

org.springframework.dao.EmptyResultDataAccessException: No class com.project.springinventory.entity.Customers entity with id 0 exists!
                            <input type="text" 
                                th:field="*{id}" value="${customer.id}" />



                            <input type="text" 
                                th:field="*{id}" th:value="${customer.id}" />

                    <input type="hidden" 
                                th:field="*{id}" th:value="${customer.id}" />

检查了对象,检查了一切。我不知道该怎么办。

我看到的是,如果我删除th:field=“*{id}”,id将加载到输入中,但不会发送到post中,尝试创建另一个具有不同名称的对象,以避免数据冲突或其他东西,但仍然相同。

    <tr th:each="customer:${customers}">
                        <th><span th:value="${customer.id}"></span></th>
                        <th><span th:text="${customer.id}"></span></th>
                        <th><span th:text="${customer.firstname}"></span></th>
                        <th><span th:text="${customer.lastname}"></span></th>
                        <th><span th:text="${customer.course}"></span></th>
                        <th><span th:text="${customer.address}"></span></th>
                        <th>
                            <form th:action="@{/showCustomer}" th:object="${customers}"
                                method="post">
                                <button class="btn btn-warning">
                                    <span class="glyphicon glyphicon-pencil" aria-hidden="true">Show</span>
                                </button>
                            </form>
                            <form th:action="@{/UpdateCustomer}" th:object="${customers}"
                                method="post">
                                <button class="btn btn-warning">
                                    <span class="glyphicon glyphicon-pencil" aria-hidden="true">Edit</span>
                                </button>
                            </form>

                            <form th:action="@{/DeleteCustomer}"
                                th:object="${customersdelete}" method="post">
                                <span th:value="${customer.id}"></span>

                                <span th:field="*{id}" value="${customer.id}"></span>

                                <input type="text" 
                                th:field="*{id}" value="${customer.id}" />

<!--                                <input type="text" th:value="${customer.id}" th:field="*{id}" /> -->

                                <input
                                    type="submit" name="btnInsert" class="btn btn-primary"
                                    value="Delete" th:value="${customer.id}" />
                            </form>

共有1个答案

戈嘉慕
2023-03-14

th:field设置输入标记的名称、值和id。(覆盖手动设置的某些值。)

由于您的th:object被定义为${customersdelete},所以表达式*{id}表示${customersdelete.id}--这与您尝试使用th:value=“${customer.id}”时的情况不同。表达式th:value=“${customer.id}”被完全忽略。

您应该在窗体之前设置控制器中customersdelete的id,并且不要使用th:value=“${customer.id}”

 类似资料:
  • 我正在使用JSoup,这是纯Java中的一个HTML解析器库,从互联网上提取和解析纯HTML页面(当然,只有很少的JS)。到目前为止,如果我想要刮取的数据附加到非常详细的HTML元素(如

  • 我在Thymeleaf中有一个表单输入字段。字段(下面代码段中的BookingEntry.DateFrom)是类型日期。我使用datepicker来允许用户选择并格式化所需的日期以输入字段。这都没问题。 我确信我可以使用一个以我选择的任何格式初始化的字符串,而不是一个日期类型,但是我想知道是否有一种方法来格式化th:字段中的初始值? 多谢

  • 在我的角度 this.device返回对象。每个对象都包含一个字段,并且在所有15个对象上都有不同的值。如果我可以访问underscore.js,我就会这样做,但是在这个项目中,我没有它。 什么是JS的方法来访问它而不需要执行for循环?

  • 问题内容: 我已经通过Scrapy文档今天一直在进行,并试图获得一个工作版本- https://docs.scrapy.org/en/latest/intro/tutorial.html#our-first- spider -在现实世界的例子。我的示例稍有不同,它有2个下一页,即 start_url>城市页面>单位页面 这是我要从中获取数据的单位页面。 我的代码: 但是当我运行它时,我得到: 因此

  • 问题内容: 我在下面的这段代码中遇到了问题,该代码几乎逐字从Firebase SDK Java文档复制而来。我是真正的语言(例如Java)的新手,它来自PHP和JavaScript的webdev背景。 基本上,addListenerForSingleValueEvent不会触发以向我返回数据。我注意到这是因为系统打印输出不会触发,因此我认为监听事件没有触发。 我怀疑这与我有限的知识有关,函数本身是

  • 问题内容: 我正在研究Firebase项目,我在其中将用户信息存储在表中。现在,我的要求是在表中显示所有用户。这是我的数据库快照 我可以使用从数据库中获取所有用户 上面的代码向我返回了包含bod,电子邮件,姓名,性别的用户数组。但是我只想获取电子邮件和用户名。 有没有一种方法只能从数据库中获取指定的字段? 问题答案: 读取节点时,必须检索其全部内容。因此,无法从读取路径时返回的数据中仅获取 特定