thymeleaf在工做中遇到的问题及解决办法(四)

一、关于字符串拼接的问题

        字符串拼接可使用以下方式。html

<a href="#" th:text="第+${StartNo}+页 +'    '+共+${countPage}+页">

        还有一种更优雅的方式,使用“||”减小了字符串的拼接,代码以下。java

<a href="#" th:text="|第${StartNo}页     共${countPage}页|">

二、关于URL表达式中传参的问题

        这个问题也比较常遇到,好比想经过超连接删除数据库中某条数据,那么在超连接上就须要传入此数据的主键。如图,我要修改此用户那么就要在修改的超连接上把10064这个ID传进来。算法

超连接传参代码以下,须要注意Thymeleaf对URL进行渲染,务必使用th:href,th:src属性 。数据库

<a class="border-main" th:href="@{userPower(id=${user.Id})}"><span class="edit"></span> 修改

几点须要说明:app

  • 上例URL最后的(id=${user.Id})表示将括号内的内容做为URL参数处理,该语法避免使用字符串拼接,大大提升了可读性。
  • @{userPower}是Context相关的相对路径,在渲染时会自动添加上当前Web应用的Context名字,假设Context名字为Java,那么结果应该是/Java/userPower。

三、关于条件判断的补充

      前面介绍了if的用法,接下来介绍一个与if用法相同但表达相反的属性 th:unless ,二者都是条件判断,if表示表达式成立则执行动做,而unless表示表达式中的条件不成立,才会执行动做。less

      thymeleaf还有一种相似Java中的三元运算符的用法,代码以下。dom

<input th:text="(${user.isAdmin}?'管理员':'普通用户')"></input>

四、关于特殊字符的转义

  • 比较: > , < , >= , <= ( gt , lt , ge , le )
  • 相等算法: == , != ( eq , ne )

五、关于一些其余的经常使用内置对象

Controller代码:工具

@RestController
public class IndexController {

    @PostMapping("toIndex")
    public String toIndex(Model model) {
        List<String> datas = new ArrayList<String>();
        datas.add("二十岁之后");
        datas.add("995600491");
        model.addAttribute("datas", datas);
        model.addAttribute("curDate", new Date());
        model.addAttribute("number", Math.random()*100);
        return "index";
    }
}

上面的代码,包含了工做中常使用的数据类型,有集合,时间类型,数值类型,下面咱们使用thymeleaf的内置对象来解析他们。spa

  • 使用#lists.size来获取List的长度。
<span th:text="${#lists.size(datas)}"></span>
  • 对于日期的格式化,与java中的SimpleDateFormat相似,第一个参数是后台传来的key,第二个参数是设置日期的格式
<span th:text="${#dates.format(curDate, 'yyyy-MM-dd HH:mm:ss')}"></span>
  • 对于数值,咱们能够对其这样操做。
<span th:text="${#numbers.formatDecimal(number, 0, 3)}"></span>

   解释:保留三位小数, 整数位自动。code

<span th:text="${#numbers.formatDecimal(number,3,1)}"></span>

  解释: 保留1位小数位,3位整数位(不够的前面加0) 。

特别提示:

内置对象前都须要加#号。

内置对象通常都以s结尾。

其余经常使用内置对象:

#numbers: 数字格式化;

#strings:字符串格式化,参照java.lang.String;

#bools:判断boolean类型;

#lists:集合操做的工具,参照java.util.List;

#sets:Set集合操做工具,参照java.util.Set;

#maps:Map集合操做工具,参照java.util.Map; 

#dates:日期格式化,参照java.util.Date;
相关文章
相关标签/搜索