小编Mah*_*zad的帖子

如何使用百里香叶传递两个对象?

我的问题如下:

我有2个不同的对象,我要从单个表单中填充.

使用1个对象,我只需要在newFoo.html中执行:

<form th:object="${foo} th:action="@{/foo}" method="post">
    <input type="text" th:field="*{name}"/>
    <button type="submit">Go</button>
</form>
Run Code Online (Sandbox Code Playgroud)

并在FooController中:

@RequestMapping(value = "/foo/new", method = RequestMethod.GET) 
public String newFoo(final Foo foo, Model model) { 
    return "newFoo"; 
} 

@RequestMapping(value = "/foo/new", method = RequestMethod.POST) 
public String saveFoo(final Foo foo, final BindingResult bindingResult, Model model) { 
    fooService.save(foo); 
    return "redirect:/foo/new"; 
} 
Run Code Online (Sandbox Code Playgroud)

假设我有另一个带有"status"变量的对象栏.如何传递该对象以便我可以在同一表单中提交输入?

喜欢:

<form th:object="${foo} && ${bar}" th:action="@{/foo}" method="post">
    <input type="text" th:field="*{name}"/>
    <input type="text" th:field="*{status}"/>
    <button type="submit">Go</button>
</form>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试使用th:object中的fieldset,这不起作用,我试图将两个:对象放在表单中,这也不起作用.

我找到的唯一方法是构建一个包含这两个对象的其他对象,然后传递它.这很好,但我不能创造那种对象,这是无稽之谈(即使它有效).

当然,对象并不像Foo和Bar那么简单,否则我会合并这两个.但那不是我能做的.

甚至可以传递两个这样的对象来在表单中使用吗?

谢谢.

html java spring thymeleaf

17
推荐指数
2
解决办法
3万
查看次数

Spring Boot类路径

Spring Boot的文档中,关于提供静态内容,它说:

默认情况下,Spring Boot将从类路径中名为/ static(或/ public或/ resources或/ META-INF/resources)的目录中提供静态内容.

我发现目录中的所有内容:

src/main/resources
Run Code Online (Sandbox Code Playgroud)

将被复制到类路径中,因此我可以将我的静态内容放入:

src/main/resources/static
Run Code Online (Sandbox Code Playgroud)

一切都会好起来,我很高兴,因为我可以在src目录下有我的静态内容.

但是,我对此有一些疑问:

  1. 为什么文档没有说静态内容src/main/resources/static而不是说类路径(我觉得这有点令人困惑)?
  2. 假设内容src/main/resources/将始终复制到类路径中,这样做是否合适?
  3. 是否有一些Spring Boot官方文档解释了我应该在除Java类和包之外的类路径中找到的内容(到目前为止我只知道我可以找到所有内容src/main/resources/)?

java spring-mvc classpath spring-boot

17
推荐指数
2
解决办法
4万
查看次数

将CSRF放入Spring 4.0.3 + Spring Security 3.2.3 + Thymeleaf 2.1.2中的Headers中

我有以下代码:

<!DOCTYPE html>

<html xmlns:th="http://www.thymeleaf.org">

<head>
    <meta name="_csrf" th:content="${_csrf.token}"/>
    <!-- default header name is X-CSRF-TOKEN -->
    <meta name="_csrf_header" th:content="${_csrf.headerName}"/>
    <title>Fileupload Test</title>
</head>
<body>

<p th:text="${msg}"></p>

<form action="#" th:action="@{/fileUpload}" method="post" enctype="multipart/form-data">
    <input type="file" name="myFile"/>
    <input type="submit"/>
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我收到错误HTTP 403:

在请求参数'_csrf'或标题'X-CSRF-TOKEN'上找到无效的CSRF令牌'null'

如果我使用此行,CSRF正在工作:

<form action="#" th:action="@{/fileUpload} + '?' + ${_csrf.parameterName} + '=' + ${_csrf.token}" method="post" enctype="multipart/form-data">
Run Code Online (Sandbox Code Playgroud)

但是如果我使用标题,我怎样才能实现工作CSRF?

security spring csrf thymeleaf

16
推荐指数
3
解决办法
9190
查看次数

在编辑时选择百日咳多重

我完全改变了这个问题,因为它的一部分 Avnish的帮助下得到了回答!汤姆把我送到了正确的方向,谢谢汤姆!

我的问题是我不知道如何告诉Thymeleaf在编辑时预先选择对象元素.

让我演示给你看:

看起来像这样

此解决方案有效:

<select class="form-control" id="parts" name="parts" multiple="multiple">
    <option th:each="part : ${partsAtribute}"
            th:selected="${servisAttribute.parts.contains(part)}"
            th:value="${part.id}"
            th:text="${part.name}">Part name</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我试过这个:

<select class="form-control" th:field="*{parts}" multiple="multiple">
    <option th:each="part : ${partsAtribute}"
            th:field="*{parts}"
            th:value="${part.id}"
            th:text="${part.name}">Part name</option>
</select>
Run Code Online (Sandbox Code Playgroud)

不工作.我也试过这个:

<select class="form-control" th:field="*{{parts}}" multiple="multiple">
    <option th:each="part : ${partsAtribute}"
            th:field="*{parts}"
            th:value="${part.id}"
            th:text="${part.name}">Part name</option>
</select>
Run Code Online (Sandbox Code Playgroud)

也没用.我试过th:field="*{parts}"从选项标签中删除,结果相同..

如果我改变th:value${part}它的工作原理,但随后它并没有发回的ID字符串如[2,4,5,6,...],但Part像实例[第@ 43b45j,部分@ we43y7,...] ... .

更新:我刚刚注意到,如果只选择了一个部分,这是有效的:

<select class="form-control" th:field="*{parts}" multiple="multiple">
    <option th:each="part : ${partsAtribute}"
            th:field="*{parts}"
            th:value="${part.id}"
            th:text="${part.name}">Part name</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如果选择了多个部件,则不起作用......

edit selected option thymeleaf

15
推荐指数
2
解决办法
3万
查看次数

如何在百里香叶中打印数组大小?

我正在使用Thymeleafspring mvc 4,但是当我想要打印列表大小时我遇到了问题

<tr th:each="u : ${users}" th:id="${u.username}" class="odd gradeX">
    <th></th>
    <td th:text="${u.username}"></td>
    <td th:text="${u.email}"></td>
    <td th:switch="${u.enabled}">
        <span th:case="true" class="badge badge-primary">Acitf</span>
        <span th:case="false" class="badge badge-danger">Désactivée</span>
        <span th:case="*" class="badge badge-dark">Inconnue</span>
    </td>
    <td th:switch="${u.roles}">
        <span th:case="ROLE_SUPER_ADMIN">Super ADmin</span>
        <span th:case="ROLE_MANGER">Manager</span>
        <span th:case="ROLE_SUPERVISEUR">Superviseur</span>
        <span th:case="ROLE_USER">User</span>
        <span th:case="*">Inconnue</span>

    </td>
    <td th:text="${#calendars.format(u.creationDate,'dd/MM/yyyy hh:mm')}"></td>
    <td th:text="${#calendars.format(u.lastLogin,'dd/MM/yyyy hh:mm')}"></td>
    **
    <td th:text="${u.engines}"></td>
    <td th:text="${u.subordonnes}"></td>
    **
    <td></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

问题出在这里th:text="${u.engines}</td>.engines是我的User实体中的ArrayList .我尝试过th:size,th:list但它没有用.

任何人都可以帮助我

编辑

这是我的User实体:

@OneToMany(mappedBy …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc thymeleaf

15
推荐指数
1
解决办法
3万
查看次数

JUnit 5中的@TestInstance注释有什么用?

您能否简单说明@TestInstance一下注释,以及它如何在JUnit 5中有用?

我认为我们可以通过使字段静态化来达到相同的效果。

java testing junit unit-testing junit5

15
推荐指数
4
解决办法
5742
查看次数

Kotlin 1.4 中 sumOf() 和 sumBy() 有什么区别?

sumOf()Kotlin 1.4 中的新函数与sumBy()sumByDouble()函数有何不同?

collections kotlin

15
推荐指数
2
解决办法
1822
查看次数

th:在选择/选项中选择了一个数字,而Thymeleaf不起作用

我有这个代码

<div th:class="form-group">
    <td><label class="control-label leftMargin10 rightMargin10" scope="col" th:text="#{insertHours.hhFrom}">Attivita'</label></td>
    <td><select class="form-control" th:field="*{hhFrom}">
        <option th:each="i : ${#numbers.sequence(0, 23)}" th:value="${i}" th:text="${i}" th:selected="${ i==9 } ">Options</option>
    </select>
    </td>
</div>
Run Code Online (Sandbox Code Playgroud)

当我尝试添加条件时:选中它不起作用.

我也用这段代码替换了:

th:attr="${i==9}? selected=selected: '' "
Run Code Online (Sandbox Code Playgroud)

但结果是一样的.

HTML

<select class="form-control" id="hhFrom" name="hhFrom">
    <option value="0" selected="selected">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc thymeleaf

14
推荐指数
3
解决办法
4万
查看次数

如何使用百日咳和弹簧填充下拉列表

我需要使用字符串列表中的所有值填充下拉列表.

控制器类

@RequestMapping(value = "/generateIds", method = RequestMethod.GET)
public String launchPage(Model model) {
    List<Municipality> municipalities = rCountryService.finaAllMunicipalities();
    //assume the list is populated with values
    List<String> countryName = new ArrayList<String>();
    for(int i=0; i<municipalities.size(); i++) {
        countryName.add(municipalities.get(i).getCountry().toString());
    }
    model.addAttribute("countryName ", countryName );

    return "generateIds";
}
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始HTML,所以我从这开始

<select th:field="*{countryName }">
    <option value="default">Select a country</option>
    <option th:each="${countryName }" th:value="${countryName }"th:text="${countryName }"/>
</select>
Run Code Online (Sandbox Code Playgroud)

我的html/controller应该如何将列表中的所有元素添加为下拉选项?

提前致谢!

html java spring thymeleaf

14
推荐指数
3
解决办法
4万
查看次数

13
推荐指数
3
解决办法
1427
查看次数