Spring Thymeleaf 如何使用 select 和 option html 标签将特定值保存在数据库中

Posted

技术标签:

【中文标题】Spring Thymeleaf 如何使用 select 和 option html 标签将特定值保存在数据库中【英文标题】:Spring Thymeleaf how can I save a spcific value in database using select and option html tags 【发布时间】:2018-02-17 03:50:48 【问题描述】:

我的数据库 (mysql) 中有一个作业表。该表包含一个 id、一个 varchar 标题(管理员、项目负责人等)和一个 varchar 角色列。角色列是spring security在登录过程中使用的,可以有ROLES_ADMINROLES_USER两个值。

我创建了一个编辑页面,管理员可以在其中编辑任何现有工作。我想要做的是将选择限制为用户和管理员,但选择标签应该显示管理员和用户,而不是显示 ROLE_ADMIN 和 ROLE_USER。

类似这样的:

选项 1 显示文本管理员将 ROLE_ADMIN 保存在数据库中

选项 2 显示文本用户将 ROLE_USER 保存在数据库中

目前我的标签看起来像这样

<select name="role">
    <option th:each="job: $jobs" th:value="$job.role" th:text="$job.role"></option>
</select>

它显示 ROLE_USER 和 ROLE_ADMIN 并保存它们

【问题讨论】:

【参考方案1】:

你应该改变

th:text="$job.role"

进入您要显示的文本并保持th:value 原样。

为此,例如,您可以在 Job 类中创建一个 getter

public String getDisplayRole() 
  return ""; // split role on _, take second element and make title case for example

然后th:text="$job.displayRole)"

【讨论】:

所以th:text="$Admin"?那不是把 Admin 保存在数据库里吗? 不,th:value 中的值应该保存到数据库中 不起作用。选择显示为空白,当我编辑时它不会改变任何内容 控制台有什么错误吗?是否调用了 getDisplayRole() 方法? 没有错误。它是。知道如何给 th:value 一个特定的值。

以上是关于Spring Thymeleaf 如何使用 select 和 option html 标签将特定值保存在数据库中的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf + Spring (not Boot) - 如何显示来自 messageSource 的消息

如何使用 Thymeleaf 配置 Spring Boot 并使用 sec:authentication 标签

Spring-Thymeleaf 如何使用 EL 调用来自 Bean 的操作方法

如何在 Spring Boot 中使用 Thymeleaf 保存角色?

(Spring,Thymeleaf)如何使用模型内的模型列表向控制器“POST”请求?

如何使用 Spring Security 和 Thymeleaf 获取当前登录用户的 ID