springboot新闻头条标签和新闻功能:
接着上一篇博客
-
标签
-
在admin目录下创建tags.html(展示),tags-input.html(新建输入)
1、tag.html(大体和types.html类似,修改中间部分,和script部分)
中间内容
<!--中间内容--> <div class="m-container-small m-padded-tb-big"> <div class="ui container"> <div class="ui success message" th:unless="${#strings.isEmpty(message)}"> <i class="close icon"></i> <div class="header">提示:</div> <p th:text="${message}">恭喜,操作成功!</p> </div> <table class="ui compact teal table"> <thead> <tr> <th></th> <th>名称</th> <th>操作</th> </tr> </thead> <tbody> <tr th:each="type,iterStat : ${page.content}"> <td th:text="${iterStat.count}">1</td> <td th:text="${type.name}">刻意练习清单</td> <td> <a href="#" th:href="@{/admin/tags/{id}/toUpdate(id=${type.id})}" class="ui mini teal basic button">编辑</a> <a href="#" th:href="@{/admin/tags/{id}/delete(id=${type.id})}" class="ui mini red basic button">删除</a> </td> </tr> </tbody> <tfoot> <tr> <th colspan="6" > <div class="ui mini pagination menu" th:if="${page.totalPages}>1" > <a class=" item" th:href="@{/admin/tags(page=${page.number}-1)}" th:unless="${page.first}">上一页</a> <a class=" item" th:href="@{/admin/tags(page=${page.number}+1)}" th:unless="${page.last}">下一页</a> </div> <a href="#" th:href="@{/admin/tags/input}" class="ui mini right floated teal basic button">新增</a> </th> </tr> </tfoot> </table> </div> </div>
2、tags-input.html
tags.html(大体和types-input.html类似,修改中间部分,和script部分)
中间内容
<!--中间内容--> <div class="m-container-small m-padded-tb-big"> <div class="ui container"> <!-- i++(一元运算符) a + b (二元运算符) 三元运算符 表达式 ? 表达式1 : 表达式2--> <form action="#" method="post" th:object="${type}" th:action="*{id}==null ? @{/admin/types/add} : @{/admin/types/update/{id}(id=*{id})}" class="ui form"> <!-- 隐藏域 --> <input type="hidden" name="id" th:value="*{id}"> <div class=" field"> <div class="ui left labeled input"> <label class="ui teal basic label">名称</label> <input type="text" name="name" placeholder="分类名称" th:value="*{name}" > </div> </div> <div class="ui error message"></div> <!-- 校验当前的输入域是否存在错误 --> <div class="ui negative message" th:if="${#fields.hasErrors('name')}"> <i class="close icon"></i> <div class="header">验证失败</div> <p th:errors="*{name}">数据错误</p> </div> <div class="ui right aligned container"> <button type="button" class="ui button" onclick="window.history.go(-1)" >返回</button> <button class="ui teal submit button">提交</button> </div> </form> </div> </div>
script部分
<script> $('.menu.toggle').click(function () { $('.m-item').toggleClass('m-mobile-hide'); }); $('.ui.dropdown').dropdown({ on : 'hover' }); $('.ui.form').form({ fields : { title : { identifier: 'name', rules: [{ type : 'empty', prompt: '请输入分类名称' }] } } }); </script>
-
在controller层设计TagController类
package com.myspringboot.demo.web.admin; import com.myspringboot.demo.entity.Tag; import com.myspringboot.demo.service.TagService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.web.PageableDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @Controller @RequestMapping("/admin") public class TagController { @Autowired TagService tagService; @GetMapping("/tags") public String tags(@PageableDefault(size = 5, sort = "id",direction = Sort.Direction.DESC) Pageable pageable, Model model) { model.addAttribute("page", tagService.listTag(pageable)); return "admin/tags"; } // 新增 跳转到新增页面 @GetMapping("/tags/input") public String toAdd(Model model) { model.addAttribute("tag", new Tag()); return "admin/tags-input"; } @PostMapping("/tags/add") public String add(Tag tag, BindingResult result, RedirectAttributes attributes) { Tag t1 = tagService.getTagByName(tag.getName()); if (t1 != null) { // 当名称重复时 像tag对象中的name属性存放一条 nameError : 不能添加重复的标签名 result.rejectValue("name", "nameError", "不能添加重复的标签名"); return "admin/tags-input"; } // 判断是否保存成功 Tag t2 = tagService.save(tag); if (t2
-