복붙노트

[SPRING] javax.el.PropertyNotFoundException : 'name'속성이 java.lang.String 유형에 없습니다. [duplicate]

SPRING

javax.el.PropertyNotFoundException : 'name'속성이 java.lang.String 유형에 없습니다. [duplicate]

위의 오류가 나타납니다.

내가 뭘 하려는지 알 수없는 이름의 번호를 걸리는 응용 프로그램을 작성한 다음 새 페이지에 그들을 인쇄합니다. 이것은 볼링 점수 응용 프로그램을 위해 있어야하지만, 지금은 단지 이름의 목록을 얻고 싶습니다. 아이디어는 각 이름이 플레이어 개체에 들어가고 차례로 플레이어 arraylist에 저장됩니다. 누구든지 도울 수 있다면, 고맙겠습니다.

이것은 내 컨트롤러 코드입니다.

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

}
}

여기에는 각 플레이어에 대한 세부 정보가 있습니다.

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

스코어링 등 모든 게임 속성에 대한 코드입니다.

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

다음은 내 JSP 파일이며 출력은 다음과 같습니다.

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

이것은 홈페이지입니다.

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

    1.

    귀하의 추천 "선수"문자열입니다. 문자열에서 속성 이름을 찾으려고합니다.

  2. from https://stackoverflow.com/questions/15072924/javax-el-propertynotfoundexception-property-name-not-found-on-type-java-lang by cc-by-sa and MIT license