Thymeleaf高级用法

Thymeleaf高级用法

1、复选框

在这里插入图片描述

其中statusList与表单中的th:object中的元素绑定,所以用*{}取出,statusList的类型是List

mstProblemStatusList是从后台传过来的,所以用${}取出

2、下拉框
<select class="form-control" th:field="*{status.statusId}">
  <option value="">&#45;&#45;请选择&#45;&#45;</option>
  <option th:each="mstProblemStatus : ${mstProblemStatusList}"                                             th:selected="${mstProblemStatus.statusId} == *{status.statusId}"
          th:value="${mstProblemStatus.statusId}"
          th:text="${mstProblemStatus.statusName}">
  </option>
</select>

注意:th:selected中要包含th:field中的元素,否则th:selected不会生效

3、获取BindingResult中的错误消息

html代码:

<input type="text"  placeholder="用户名" th:field="*{account}" />
<span th:if="${#fields.hasErrors('*{account}')}">
  <ul><li th:each="err : ${#fields.errors('*{account}')}" th:text="${err}"></li></ul>
</span>

实体类:

@Entity
@Table(name="mst_user")
public class MstUser implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer userId;

    /** 账号 */
    @NotBlank(message = "账号不能为空")
    private String account;

    /** 用户名 */
    private String userName;

    /** 密码 */
    @NotBlank(message = "密码不能为空")
    private String password;
  
  	// get、set方法省略
}

controller:

/**
  * 登陆校验
  * @param mstUser
  * @param model
  * @return
*/
@RequestMapping(value = "/loginCheck")
public String loginCheck(@Validated MstUser mstUser, BindingResult result, Model model, HttpSession session) {

  if(result.hasErrors()) {
    model.addAttribute("mstUser", mstUser);
    return "forward:/login";
  }

  mstUser = mstUserService.loginCheck(mstUser);
  if(mstUser == null) {
    model.addAttribute("error", "用户名或密码错误");
    return "forward:/login";
  }

  session.setAttribute("mstUser", mstUser);

  return "redirect:/mstProject/list";
}

注意:

①需要在被校验的对象前面加上@Validated 注解,并且BindingResult要紧跟在被校验对象的后面,否则会报错

②redirect与forward的区别:redirect重定向时不能携带BindingResult中的错误信息,而forward跳转时可以携带

BindingResult中的错误信息

4、格式化日期
<span th:text="${#dates.format(tranProblem.createTime, 'yyyy-MM-dd')}"></span>
5、操作Map
<tr th:each="systemSetting,items : *{systemSettings}">
	<td th:if="${items.index == 0}" th:rowspan="*{#maps.size(systemSettings)}">基础配置</td>
	<td><label th:text="${mstSystemSetting.value.comment}"></label></td>
	<td th:if="${mstSystemSetting.key != 'sys.auto.start'}">
		<input type="text" class="form-control" 
			th:name="'mstSystemSettings['+${mstSystemSetting.key}+'].settingValue'"
			th:value="${mstSystemSetting.value.settingValue}"/>
	</td>
	<td th:if="${mstSystemSetting.key == 'sys.auto.start'}">
		<input type="radio" name="mstSystemSettings[sys.auto.start].settingValue" value="0"
			th:checked="*{mstSystemSettings['sys.auto.start'].settingValue} == 0"
		/>不自启
		<input type="radio" name="mstSystemSettings[sys.auto.start].settingValue" value="1"
			th:checked="*{mstSystemSettings['sys.auto.start'].settingValue} == 1"
		/>自启
	</td>
</tr>
6、绑定表单
<form th:action="@{/loginCheck}" th:object="${mstUser}" th:method="POST">
  <div class="form-group">
    <div class="input-icon">
      <i class="fa fa-user"></i>
      <input type="text"  placeholder="用户名" th:field="*{account}" />
      <span th:if="${#fields.hasErrors('*{account}')}">
        <ul><li th:each="err : ${#fields.errors('*{account}')}" th:text="${err}"></li></ul>
      </span>
    </div>
  </div>
  <div class="form-group">
    <div class="input-icon">
      <i class="fa fa-lock"></i>
      <input type="password" placeholder="密码" th:field="*{password}" />
      <span th:if="${#fields.hasErrors('*{password}')}">
        <ul><li th:each="err : ${#fields.errors('*{password}')}" th:text="${err}"></li></ul>
      </span>
    </div>
  </div>

  <div class="form-group aligncenter">
    <button type="submit" id="loginBtn" class="btn btn-primary">
      登录 <i class="fa fa-sign-out"></i>
    </button>
  </div>
</form>

注意:th:field中的字段与th:object中的对象绑定

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是一份关于您的Java SpringBoot项目的简介描述: 探索Java的SpringBoot魔法 亲爱的开发者们,准备好一起踏上这次深入Java的SpringBoot之旅了吗?如果您正在寻找一个现代化、高效且易于扩展的开发框架,那么这个SpringBoot项目将是您的理想选择。 主要特点: 快速开发:SpringBoot通过自动配置和约定大于配置的原则,大大简化了项目设置和开发过程。 易于扩展:SpringBoot与生俱来的灵活性使您可以轻松集成各种服务和数据库,以满足您日益增长的需求。 安全性:内置的安全特性,如OAuth2和Spring Security,确保您的应用程序安全无虞。 微服务支持:SpringBoot是微服务架构的理想选择,可以帮助您构建模块化、可扩展的应用程序。 社区支持:全球的开发者社区意味着您可以在遇到问题时找到大量的资源和支持。 无论您是初出茅庐的Java新手,还是经验丰富的开发者,这个项目都将为您提供一个深入了解SpringBoot的机会。无论您是想学习新的技能,还是想提高现有应用程序的性能,这个项目都将是您的宝贵资源。 内容概览 项目设置和初始化 控制器设计和实现 数据持久化与数据库集成 安全性和身份验证 性能优化和监控 部署和生产环境考虑 现在,是时候让您的Java技能得到充分发挥,并掌握SpringBoot的魔法了!这个项目将带领您从基础到高级,探索SpringBoot的每一个角落。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值