According to this post I have implemented generic converter based on toString conversion-error-setting-value-com-example-warehousecafebabe-for-null-conver however I am getting transaction aborted exception fk_game_id cannot be null. What I have to do to make it work?
JSF:
<h:selectOneMenu id="fkGameId" value="#{controller.gameList}" converter="omnifaces.SelectItemsConverter" required="true" requiredMessage="The Game Id field is required.">
<f:selectItem itemValue="#{null}" itemLabel="#{game.gameDescription}"/>
<f:selectItems value="#{controller.gameLists}" var="game" itemValue="#{game.gameId}" itemLabel="#{game.gameDescription}"/>
</h:selectOneMenu>
<h:outputLabel value="Player ID: " for="fkPlayerId" />
<h:selectOneMenu id="fkPlayerId" value="#{controller.playerList}" converter="omnifaces.SelectItemsConverter" required="true" requiredMessage="The Player ID field is required.">
<f:selectItem itemValue="#{null}" itemLabel="#{player.playerName}"/>
<f:selectItems value="#{controller.playerLists}" var="player" itemValue="#{player.playerId}" itemLabel="#{player.playerName}"/>
</h:selectOneMenu>
Generic Converter in game entity class:
@Override
public String toString() {
return "entities.Game[ gameId=" + gameId + " ]";
}
controller bean:
@PostConstruct
public void init() {
this.gameLists = gameFacade.findAll();
this.playerLists = playerFacade.findAll();
this.game = new Game();
this.player = new Player();
this.game.setGameId(Integer.SIZE);
this.player.setPlayerId(Integer.SIZE);
this.playerGame.setFkGameId(game);
this.playerGame.setFkPlayerId(player);
}
public String addPlayerGame() {
this.playerGame = new PlayerGame();
this.playerGameFacade.create(this.playerGame);
return "index";
}