Я создаю приложение с Spring Framework и Postgresql в качестве базы данных. Предполагается, что это будет база данных для студентов, где они смогут увидеть свои оценки и курсы, а учителя смогут увидеть свои оценки, всех студентов, все курсы, в основном администраторов. Права и каждый пользователь может выполнять CRUD. Он использует шаблон MVC. Я настроил tomcat на порт 8010. Когда я пытаюсь получить к нему доступ с помощью: localhost: 8010 / Teacher, я получаю «страницу ошибки Whitelabel». В журналах Java у меня есть «Не могу найти расположение шаблона: classpath: / templates / (пожалуйста, добавьте несколько шаблонов или проверьте конфигурацию Thymeleaf)» Однако у меня есть HTML-страница для учителя.
Я пытался изменить шаблон или даже использовать простой шаблон для вывода некоторого текста, не работает. Я понятия не имею, что я делаю неправильно. Я новичок в Spring и плохо разбираюсь в html.
Модель класса:
package M.Entities;
import javax.persistence.*;
@Entity
@Table(name = "Teacher")
public class Teacher{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="name", nullable = false)
private String name;
@Column(name="address", nullable = true)
private String address;
@Column(name="email",nullable = false)
private String email;
@Column(name="age")
private Integer age;
@Column(name="passsword",nullable = false)
private String password;
//with getters and setters and constructor
Класс TeacherService
@Service
public class TeacherService {
private int count;
@Inject
TeacherRepository teacherRepository;
public List<Teacher> getAllTeachersWithCourses()
{
return teacherRepository.findAll();
}
public void create(Teacher newTeacher)
{
System.out.println("aaaa"+newTeacher);
teacherRepository.save(newTeacher);
}
public void delete(Teacher newTeacher)
{
teacherRepository.delete(newTeacher);
}
Учитель классаКонтроллер
@Controller
public class TeacherController {
@Inject
TeacherService teacherService;
@RequestMapping(value = "/Teacher", method = RequestMethod.GET)
public ModelAndView getTeachers()
{
List<Teacher> teacherList = teacherService.getAllTeachersWithCourses();
ModelAndView mav = new ModelAndView("TeacherView");
mav.addObject("teachersWithCoursesList", teacherList);
return mav;
}
@RequestMapping(value = "/Teacher", method = RequestMethod.POST)
public ModelAndView postTeacher(@ModelAttribute(value = "newTeacher") Teacher newTeacher)
{
teacherService.create(newTeacher);
return new ModelAndView("redirect:teachers");
}
@RequestMapping(value = "/Teacher", method = RequestMethod.POST)
public void createTeacher(@ModelAttribute(value = "newTeacher") Teacher newTeacher)
{
System.out.println(newTeacher);
teacherService.create(newTeacher);
//System.out.println("after creation"+th);
// return newTeacher;
}
@RequestMapping(value = "/Teacher", method = RequestMethod.DELETE)
public ModelAndView deleteTeacher(@ModelAttribute(value = "newTeacher") Teacher newTeacher)
{
teacherService.delete(newTeacher);
return new ModelAndView("redirect:teachers");
}
@RequestMapping(value = "/Teacher", method = RequestMethod.POST)
@ResponseBody
public void set(@RequestParam("idTeacher") Integer idTask, @RequestParam("name") String description, @RequestParam("password") String filepath, @RequestParam("address") String str, @RequestParam("email") String ema,@RequestParam("age")Integer it){
// assign parameters to taskDocumentEntity by constructor args or setters
Teacher document = new Teacher(idTask,description,filepath,str,ema,it);
teacherService.create(document);
}
Страница учителя по HTML
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:th1="http://www.w3.org/1999/xhtml">
<head>
<title>Teachers</title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
</head>
<body>
<table border="1">
<thead>
<tr>
<th>teacher.ID</th>
<th>teacher.NAME</th>
<th>teacher.PASSWORD</th>
<th>teacher.EMAIL</th>
<th>teacher.AGE</th>
<th>course entire data</th>
</tr>
</thead>
<tbody>
<tr th:each="teacher : ${ teachersWithCoursesList }">
<td th:text="${ teacher.id }">ID</td>
<td th:text="${ teacher.name }"></td>
<td th:text="${ teacher.password }"></td>
<td th:text="${ teacher.email }"></td>
<td th:text="${ teacher.age }"></td>
<td th1:text="${ teacher.courses }">
<p th:each="course: ${ teacher.courses }">
<span th:text="${course.id}"></span>
<span th:text="${course.name}"></span>
</p>
</td>
</tr>
</tbody>
</table>
<br/>
<br/>
<br/>
<form th:object="${newTeacher}" method="post">
<div class="col-sm-12">
<label>Name</label>
<input placeholder="Teacher Name" name="name"/>
</div>
<div class="col-sm-12">
<label>Password</label>
<input placeholder="Teacher password" name="password"/>
</div>
<div class="col-sm-12">
<label>speciality</label>
<input placeholder="Teacher speciality" name="speciality"/>
</div>
<div class="col-sm-12">
<label>Email</label>
<input placeholder="Teacher email" name="email"/>
</div>
<button type="submit" class = "btn btn-primary">ADD Teacher</button>
</form>
</body>
У меня также есть репозиторий jpa для учителя, но в нем нет строк реального кода, поскольку он выполняет роль расширения JPA.
Чтобы увидеть страницу на локальном хосте: 8010 / Учитель.
Любые советы по улучшению написания, оптимизации или любые источники, которые я мог бы изучить Спасибо.