Static Server-Side Rendering - I
Learn to implement static server-side rendering in the application.
We'll cover the following...
Expanding the form
The form that edits a Team
has the backing form objects CreateTeamFormData
and EditTeamFormData
. To allow for adding and editing of the users on that team, we’ll need to expand those objects.
Single player data
We’ll start by creating TeamPlayerFormData
which contains the information of a single player and their position on the team:
Press + to interact
package com.tamingthymeleaf.application.team.web;import com.tamingthymeleaf.application.team.PlayerPosition;import com.tamingthymeleaf.application.team.TeamPlayer;import com.tamingthymeleaf.application.user.UserId;import javax.validation.constraints.NotNull;public class TeamPlayerFormData {@NotNullprivate UserId playerId;@NotNullprivate PlayerPosition position;public UserId getPlayerId() {return playerId;}public void setPlayerId(UserId playerId) {this.playerId = playerId;}public PlayerPosition getPosition() {return position;}public void setPosition(PlayerPosition position) {this.position = position;}public static TeamPlayerFormData fromTeamPlayer(TeamPlayer player) {TeamPlayerFormData result = new TeamPlayerFormData();result.setPlayerId(player.getPlayer().getId());result.setPosition(player.getPosition());return result;}}
We can now use this in CreateTeamFormData
to model the information of the players in the HTML
form:
Press + to interact
package com.tamingthymeleaf.application.team.web;import com.tamingthymeleaf.application.user.UserId;import javax.validation.Valid;import javax.validation.constraints.NotBlank;import javax.validation.constraints.NotNull;import javax.validation.constraints.Size;public class CreateTeamFormData {@NotBlank@Size(max = 100)private String name;@NotNullprivate UserId coachId;@NotNull@Size(min = 1)@Validprivate TeamPlayerFormData[] players; //<.>public CreateTeamFormData() {this.players = new TeamPlayerFormData[]{new TeamPlayerFormData()}; //<.>}public String getName() {return name;}public void setName(String name) {this.name = name;}public UserId getCoachId() {return coachId;}public void setCoachId(UserId coachId) {this.coachId = coachId;}public TeamPlayerFormData[] getPlayers() {return players;}public void setPlayers(TeamPlayerFormData[] players) {this.players = players;}}