2013-02-25 12 views
5

Otrzymuję powyższy błąd.javax.el.PropertyNotFoundException: Nazwa właściwości nie została znaleziona w typie java.lang.String

Próbuję napisać aplikację, która przyjmuje nieznaną liczbę nazw, a następnie wypisuje je na nowej stronie. To powinno być dla aplikacji do gry w kręgle, ale na razie chcę tylko uzyskać listę nazwisk. Chodzi o to, aby każda nazwa trafiała do obiektu gracza, a następnie była zapisywana na liście graczy. Jeśli ktokolwiek może pomóc, byłbym wdzięczny.

To jest mój kod kontrolera:

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); 

} 
} 

Przechowuje dane dla każdego gracza:

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; 
} 
} 

Jest to kod dla wszystkich właściwości gry takie jak punktacji itp

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; 
} 
} 

Oto moje pliki JSP, najpierw dane wyjściowe:

<%@ 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> 

Jest to strona domowa:

<%@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> 

Odpowiedz

21

Zmiana ta <c:forEach var="player" items="players"> do <c:forEach var="player" items="${players}">

Jako swoimi nawiązujących "graczy" string. próbuje znaleźć nazwę właściwości w ciągu znaków.

Powiązane problemy