javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String [duplicate]

匿名 (未验证) 提交于 2019-12-03 02:26:02

问题:

I'm getting the error above.

What i'm trying to do is write an app that takes in an unknown number of names, then prints them out on a new page. This is supposed to be for a bowling scoring app, but for now I just want to get a list of names. The idea is for each name to go into a player object, then in turn be stored in the players arraylist. If anyone can help, I would appreciate it.

This is my controller code:

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

This holds details for each player:

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

This is the code for all Game properties, such as scoring etc.

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

The following are my JSP files, the output first:

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

This is the 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> 

回答1:

Change this <c:forEach var="player" items="players"> to <c:forEach var="player" items="${players}">

As your referring "players" string. it is trying to find the property name in string.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!