项目中要求点击Customers,跳转到list.html网址,以表格的形式显示出员工的数据。因此重点在于使用Controller控制类去响应点击Custimers的请求,然后把员工的数据转发给list.html页面,并且使用动态表格的形式进行展示。
18.1 修改dashboard.html页面
访问/main.html地址会跳转到dashboard.html页面,在页面中有文本是Customers的a标签,需要修改对应的href,实现在点击这个标签后,网页跳转到localhost:8080/emps地址。
18.2 创建Controller类,响应/emps请求
在controller包下,创建了一个名为EmployeeController的控制类,用来处理/emps请求。当访问这个地址的时候,自动创建了EmployeeDao对象,调用了这个对象的getAll()方法,得到存放员工数据的集合,在通过Model转发到return的页面,即static或public或resources或template包下的emp包下的list.html中。注意自动注入的用法:先在EmployeeDao类中要有@Repository注解,然后再在控制类中进行自动注入,创建一个同名对象。
package jiang.com.springbootstudy.controller;
import jiang.com.springbootstudy.dao.EmployeeDao;
import jiang.com.springbootstudy.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Collection;
@Controller
public class EmployeeController {
@Autowired
EmployeeDao employeeDao;
@RequestMapping("/emps")
public String list(Model model){
Collection<Employee> employees = employeeDao.getAll();
model.addAttribute("emps",employees);
return "emp/list";
}
}
18.3 修改list.html中的<table>标签的内容
修改table标签的内容,创建一个动态表格:
在tr标签中使用th:each对转发的集合进行遍历,tr中取到每个对象后,td就可以使用对象的get方法进行取值。如果要使用java中的类,比如Dates,则要在先加#号,然后把首字母改成小写,即${#dates},然后就可以调用这个类的方法了。对于判断语句,直接在th:text里写,比如th:text=" ${emp.getGender()==1?‘男’:'女' }"。还有就是$要放{}外面。
<table class="table table-striped table-sm">
<thead>
<tr>
<th>id</th>
<th>lastName</th>
<th>email</th>
<th>department</th>
<th>birth</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr th:each="emp:${emps}"> <!--遍历出籍贯emp就有几个tr标签-->
<td th:text="${emp.getId()}"></td>
<td th:text="${emp.getLastName()}"></td>
<td th:text="${emp.getEmail()}"></td>
<td th:text="${emp.getGender()==0?'女':'男'}"></td>
<td th:text="${emp.getDepartment().getDepartmentName()}"></td>
<td th:text="${#dates.format(emp.getBirth(),'yyyy-MM-dd')}"></td>
<td>
<button class="btn btn-sm btn-primary">编辑</button>
<button class="btn btn-sm btn-danger">删除</button>
</td>
</tr>
</tbody>
</table>
18.4 效果展示