Static Server-Side Rendering - I

Learn to implement static server-side rendering in the application.

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 {
@NotNull
private UserId playerId;
@NotNull
private 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;
@NotNull
private UserId coachId;
@NotNull
@Size(min = 1)
@Valid
private 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;
}
}
...