【发布时间】:2020-01-16 18:56:55
【问题描述】:
我不明白如何在管理页面上实现将用户添加到团队。 我在控制器中写了add方法,不明白怎么在界面中全部显示出来。 需要两个列表,一个包含所有团队的列表,另一个包含所有用户的列表,然后保存? 开始学习百里香和很多奇怪的东西。
admin.html
</head>
<body>
<h1>Admin page </h1>
<!--
<form action="#" th:action="@{/admin}" th:object="${team}" method="post">
<p>Add Team: <input type="text" th:field="*{name}" /></p>
<p><input type="submit" value="addTeam" />
</form>
-->
<form th:action="@{/logout}" method="post">
<input type="submit" value="Sign Out"/>
</form>
</body>
</html>
用户
@Entity
@Table(name="users")
public class Users {
@Id
@Column(name="email",unique = true, nullable = false,length = 200)
String email;
@Column(name="name",nullable = false,length = 200)
String name;
@Column(name="password",nullable = false,length = 128)
@JsonIgnore
String password;
@Column(name = "avatar", nullable = true)
String avatar;
@ManyToOne
@JoinColumn(name="team_id", nullable=true)
Team team;
@ManyToOne
@JoinColumn(name="role", nullable=false)
@JsonIgnore
Role role;
public Users() {
}
get und set
}
团队
Entity
@Table(name="team")
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column
String name;
@Column
String url;
@Lob
@Column(name = "avatar",nullable = true,columnDefinition="BLOB")
String avatar;
@OneToMany(mappedBy="team",cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnore
Set<Users> users = new HashSet<>();
public Team() {
}
get und set
管理员控制器
@Controller//RestController 公共类 AdminController {
.....
@GetMapping("/admin/team")
List<Team> allTeams() {
return teamRepository.findAll();
}
@RequestMapping(value = "/admin/team/{id}/user/{email}", method = RequestMethod.POST,produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
public Users addUserToTeam(
@PathVariable long id,@PathVariable String email) {
Team team = teamRepository.findById(id).orElseThrow(() -> new NoSuchTeamException("Team not found"));
Users user = userRpRepository.findById(email).orElseThrow(() -> new NoSuchUserException("User not found"));
user.setTeam(team);
user = userRpRepository.save(user);
return user;
@RequestMapping(value = "/admin", method = RequestMethod.GET)
public String adminPage(Model model) {
model.addAttribute("admin",new Team());
return "admin";
}
}
【问题讨论】:
-
看看github.com/spring-projects/spring-petclinic 。 Petclinic 是了解“经典”spring 服务器端渲染应用程序如何工作的一个很好的起点。它使用 Spring Boot 2.2 和百里香叶。您的问题很宽泛,无法回答;您的帖子应该返回一个新的
View或重定向到一个 GET 并且不应该返回User实体。 -
我想在管理页面上选择一个已经存在的用户并选择团队。然后通过单击添加按钮,我将此用户添加到此团队。