2013-02-25 25 views
5

Ho ricevuto l'errore sopra.javax.el.PropertyNotFoundException: proprietà 'nome' non trovata sul tipo java.lang.String

Quello che sto cercando di fare è scrivere un'app che prende un numero sconosciuto di nomi, quindi li stampa su una nuova pagina. Questo dovrebbe essere per un'app di bowling, ma per ora voglio solo ottenere una lista di nomi. L'idea è che ogni nome venga inserito in un oggetto giocatore, quindi a sua volta essere memorizzato nell'arrayista dei giocatori. Se qualcuno può aiutare, lo apprezzerei.

Questo è il mio codice di controllo:

package multiplayergame; 

import java.util.ArrayList; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.validation.BindingResult; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.SessionAttributes; 
import org.springframework.web.servlet.ModelAndView; 


@Controller 
@SessionAttributes 
public class MultiplayerController { 

int score; 
int roll; 
Game game = new Game(); 
GameProperties gameProps = new GameProperties(); 
int playerNo = 0; 

ArrayList<PlayerGame> players = new ArrayList<>(); 
PlayerGame player; 

@RequestMapping(value = "/home", method = RequestMethod.GET) 
public ModelAndView home() { 

    return new ModelAndView("home", "command", gameProps);  
} 

@RequestMapping(value = "/nextName", method = { RequestMethod.POST, RequestMethod.GET}) 
public ModelAndView homeNext(MContact mcontact, BindingResult result) {  
    player = new PlayerGame(); 

    player.setName(mcontact.getName()); 
    players.add(player); 
    gameProps.setPlayers(players); 
    playerNo++; 
    return new ModelAndView("home", "command", gameProps);  
} 

@RequestMapping(value = "/test", method = RequestMethod.POST) 
public ModelAndView playNext(GameProperties gameProps2, ModelMap model) { 

    model.addAttribute("players", gameProps.getPlayers()); 
    model.addAttribute("name", gameProps.getPlayers().get(playerNo).getName()); 

    return new ModelAndView("test", "players", gameProps2); 

} 
} 

Questo vale dettagli per ogni giocatore:

package multiplayergame; 

public class PlayerGame { 
private int score; 
private int pins; 
private String name; 
private int roll; 
private int nOfPlayers; 
private int playerNo; 


Game game = new Game(); 

public Game getGame() { 
    return game; 
} 
public void setGame(Game game) { 
    this.game = game; 
} 
public int getScore() { 
    return score; 
} 
public void setScore(int score) { 
    this.score = score; 
} 
public int getPins() { 
    return pins; 
} 
public void setPins(int pins) { 
    this.pins = pins; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public int getRoll() { 
    return roll; 
} 
public void setRoll(int roll) { 
    this.roll = roll; 
} 
public int getnOfPlayers() { 
    return nOfPlayers; 
} 
public void setnOfPlayers(int nOfPlayers) { 
    this.nOfPlayers = nOfPlayers; 
} 
public int getPlayerNo() { 
    return playerNo; 
} 
public void setPlayerNo(int playerNo) { 
    this.playerNo = playerNo; 
} 
} 

Questo è il codice per tutte le proprietà di gioco, come ad esempio segnando ecc

package multiplayergame; 

import java.util.ArrayList; 

public class GameProperties { 

private int score; 
private int pins; 
private String name; 
private int roll; 
private int nOfPlayers; 
PlayerGame player; 
private ArrayList<PlayerGame> players; 
private int playerNo; 

public int getScore() { 
    return score; 
} 
public void setScore(int score) { 
    this.score = score; 
} 
public int getPins() { 
    return pins; 
} 
public void setPins(int pins) { 
    this.pins = pins; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public int getRoll() { 
    return roll; 
} 
public void setRoll(int roll) { 
    this.roll = roll; 
} 
public int getnOfPlayers() { 
    return nOfPlayers; 
} 
public void setnOfPlayers(int nOfPlayers) { 
    this.nOfPlayers = nOfPlayers; 
} 
public ArrayList<PlayerGame> getPlayers() { 
    return players; 
} 
public void setPlayers(ArrayList<PlayerGame> players) { 
    this.players = players; 
} 
public int getPlayerNo() { 
    return playerNo; 
} 
public void setPlayerNo(int playerNo) { 
    this.playerNo = playerNo; 
} 
} 

I seguenti sono i miei file JSP, l'uscita prima:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 


<html> 
<head> 
<title>Test output</title> 
</head> 
<body> 

<h2>Test Roll</h2> 

<c:forEach var="player" items="players"> 
Name <c:out value="${player.name}"/><p> 
</c:forEach> 

</body> 
</html> 

Questa è la home page:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<html> 
<head> 
<title>Bowling</title> 
</head> 
<body> 
<h2>Welcome players!</h2> 

<h2>Please enter your names.</h2> 

<form:form method="post" action="/multiplayergame/nextName"> 

<table> 
<tr> 
    <td><form:label path="name">Name</form:label></td> 
    <td><form:input path="name" /></td> 
</tr> 
<tr> 
    <td colspan="2"> 
     <input type="submit" name = "button" value="Next Player"/> 
    </td> 
</tr> 
</table>  
</form:form> 
<form:form method="post" action="/multiplayergame/test"> 
<tr> 
    <td colspan="2"> 
     <input type="submit" name = "button" value="Play"/> 
    </td> 
</tr> 
</form:form> 
</body> 
</html> 

risposta

21

Modificare questa <c:forEach var="player" items="players">-<c:forEach var="player" items="${players}">

Man mano che si riferiscono "giocatori" stringa. sta cercando di trovare il nome della proprietà in stringa.

Problemi correlati