I have been growing fond of JSF as of late, but was stumped by the simplest task. How do I associate some value with a link? If I was using PHP I would just append a query parameter and grab the value. But with JSF it’s all done inside our xhtml files, so how do we set a value based on the link clicked? Just use
inside the commandAction. This stores any expression into the specified bean’s property. See below for a full faces example. Each Player link will set the backing Bean’s player object before calling the action.
pageTitle appTitle content
Team Management
Affinity Management Plus (Basketball)
#{team.teamName} Player Summary
*
-
### Played #{game.date} against #{game.team2.teamName}
### Stats for
#{entry.key.name}
1
2
3
fouls
steals
rebounds
minutes
#{entry.value.onePointers}
#{entry.value.twoPointers}
#{entry.value.threePointers}
#{entry.value.fouls}
#{entry.value.steals}
#{entry.value.rebounds}
#{entry.value.minutesPlayed}
import java.util.Iterator; import java.util.LinkedList; import java.util.List;
import javax.faces.event.ActionEvent; import javax.faces.model.SelectItem;
import com.libertymutual.amp.basketball.DAO.GameDAO; import com.libertymutual.amp.basketball.DAO.PlayerDAO; import com.libertymutual.amp.basketball.DAO.TeamDAO;
public class TeamProcessor { //Business MOdels (used for temporary associations and datastore) private Team team= new Team(); private Player player=new Player(); private Game game=new Game(); private Statistic statistic = new Statistic();
private CumulativeStatistic cumaltiveStat= new CumulativeStatistic();
private Team team2= new Team();
private List opponents = new LinkedList();
private TeamDAO teamDAO = new TeamDAO();
private PlayerDAO playerDAO = new PlayerDAO();
private GameDAO gameDAO = new GameDAO();
//authorization
private List users= new LinkedList();
private String tmpName="";
private String tmpPass="";
private boolean isAuthorized=false;
//expose properties to jsf
public Game getGame() {
return game;
}
public void setGame(Game game) {
this.game = game;
}
public Statistic getStatistic() {
return statistic;
}
public void setStatistic(Statistic statistic) {
this.statistic = statistic;
}
public List getUsers() {
return users;
}
public void setUsers(List users) {
this.users = users;
}
public String getTmpName() {
return tmpName;
}
public void setTmpName(String tmpName) {
this.tmpName = tmpName;
}
public String getTmpPass() {
return tmpPass;
}
public void setTmpPass(String tmpPass) {
this.tmpPass = tmpPass;
}
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
public void setTeam2(Team team2) {
this.team2 = team2;
}
public Team getTeam2() {
return team2;
}
public List getOpponents() {
return opponents;
}
public void setOpponents(List opponents) {
this.opponents = opponents;
}
public TeamProcessor(){
// set valid users
User eddie = new User();
eddie.setName("eddie");
eddie.setPassword("1234");
users.add(eddie);
opponents = new LinkedList();
for (Team team : teamDAO.list()) {
opponents.add(new SelectItem(team,team.getTeamName()));
}
}
/*
*
* Action Methods
*/
public String processTeam(){
if(!isAuthorized)return "invalid-login";
String result= "success";
return result ;
}
public String processPlayer(){
System.out.println(">>> processPlayer");
if(!isAuthorized)return "invalid-login";
String result= "error";
if( team.addPlayer(player)){
result="success";
playerDAO.addPlayer(player);
System.out.println("Added: "+player.getName());
}
player=new Player();
System.out.println("<<< processPlayer");
return result;
}
public String processPlayerAndAddAnother(){
System.out.println(">>> processPlayerAndAddAnother");
if(!isAuthorized)return "invalid-login";
processPlayer() ;
System.out.println("<<< processPlayerAndAddAnother");
return null;
}
public String processPlayerDoner(){
return "success";
}
public String loginAction(){
String result="invalid-login";
for(User user : users){
if(tmpName.equals(user.getName())
&&
tmpPass.equals(user.getPassword())){
result = "success";
isAuthorized=true;
}
}
return result;
}
public String processGame(){
System.out.println(">>> processGame");
String result="error";
game.setTeam1(this.team);
game.setTeam2(team2);
if(team.addGame(game)){
gameDAO.addGame(game);
result="success";
game=new Game();
}
System.out.println("<<< processGame:"+result);
return result;
}
public String processGameStats(){
game.addGameStat(player, statistic);
System.out.println(">>> processGameStats: " + game.getTeam2().getTeamName()+player.getName()+statistic.getFouls());
player=new Player();
statistic=new Statistic();
game=new Game();
return null;
}
public String finishGameStats(){
processGameStats();
return "success";
}
public String preparePlayerAction(){
String result = "error";
System.out.println("playerAction>>>");
System.out.println("Player:"+player.toString());
System.out.println("team:"+team.toString());
for( Game game : team.getGames()){
Statistic stat = game.getGameStatistic(player);
if (stat != null){
cumaltiveStat.addStatistic(stat);
}
result="success";
}
System.out.println("CS:"+cumaltiveStat.getAverage(cumaltiveStat.getFouls()));
System.out.println("playerAction<<<");
return result;
}
public void preparePlayerListener(ActionEvent ae){
System.out.println("playerListener>>>");
for (Iterator iterator = ae.getComponent().getAttributes().entrySet().iterator(); iterator.hasNext();) {
Object o = iterator.next();
System.out.println(o.toString());
}
System.out.println("Player:"+player.toString());
System.out.println("playerListener<<<");
}
public CumulativeStatistic getCumaltiveStat() {
return cumaltiveStat;
}
public void setCumaltiveStat(CumulativeStatistic cumaltiveStat) {
this.cumaltiveStat = cumaltiveStat;
}
}