2012-10-19 25 views
0

我在這裏結束了。這似乎是一件非常微不足道的事情,但它不起作用。我有一個jsp頁面,它傳遞給服務器一個Long(tournamentId)和一個對象列表。 當我發佈表單時,列表已正確傳遞,但長成員返回爲空,即使我可以看到它已發送。沒有傳遞給控制器​​的參數 - 彈簧

的JSP:

<form:form method="post" action="addBets" modelAttribute="gwbCollection"> 
<c:choose> 
<c:when test="${gwbCollection.tournamentState == 'CLOSED_FOR_BETS'}"> 
     <br> 
    </c:when> 
</c:choose> 
<input name="tournamentId" value="${gwbCollection.tournamentId}" type="hidden"/> 
    <table> 
     <tr> 
      <td>Side A:</td> 
      <td>Score A:</td> 
      <td>Side B:</td> 
      <td>Score B:</td> 
     </tr> 
     <c:forEach var="gwb" items="${gwbCollection.games}" varStatus="status"> 
      <tr> 
       <td><input name="games[${status.index}].game.gameId" value="${gwb.game.gameId}" type="hidden"/> 
        <input name="games[${status.index}].userId" value="${gwb.userId}" type="hidden"/> 
        <input name="games[${status.index}].game.tournamentId" value="${gwb.game.tournamentId}" type="hidden"/> 
        <input name="games[${status.index}].bet.betId" value="${gwb.bet.betId}" type="hidden"/> 
        ${gwb.game.sideA}</td> 
       <td><input name="games[${status.index}].bet.scoreA" value="${gwb.bet.scoreA}"/></td> 
       <td>${gwb.game.sideB}</td> 
       <td><input name="games[${status.index}].bet.scoreB" value="${gwb.bet.scoreB}"/></td> 
      </tr> 
     </c:forEach> 
    </table> 
    <c:choose> 
     <c:when test="${gwbCollection.tournamentState == 'OPEN_FOR_BETS'}"> 
      <input type="submit" /> 
     </c:when> 
    </c:choose> 
</form:form> 

控制器:

@Controller 
@SessionAttributes 
public class BetController { 
... 
@RequestMapping(value = "/addBets", method = RequestMethod.POST) 
public String addBet(@ModelAttribute("gwbCollection") GamesWithBetsCollection gwbCollection) { 
    List<Bet> bets = gwbUtil.getBets(gwbCollection); 
... 
} 

最後,GamesWithBetsCollection:

public class GamesWithBetsCollection { 
private TournamentState tournamentState; 
private Long tournamentId; 
private List<GameWithBet> games; 

public GamesWithBetsCollection() { 

} 

public List<GameWithBet> getGames() { 
    return games; 
} 

public void setGames(List<GameWithBet> games) { 
    this.games = games; 
} 

public TournamentState getTournamentState() { 
    return tournamentState; 
} 

public void setTournamentState(TournamentState tournamentState) { 
    this.tournamentState = tournamentState; 
} 

public Long getTournamentId() { 
    return tournamentId; 
} 

public void setTournamentId(long tournamentId) { 
    this.tournamentId = tournamentId; 
} 

}

+0

我不會認爲這會有所作爲,但我注意到'tournamentId'的setter正在等待'long',但是你的字段和getter指定了'Long'。 – nickdos

回答

0

Nickdos - WOW!這就是答案!漂亮的接吻!

回顧 - 「tournamentId」字段定義爲Long(對象),但setter具有long(原始)作爲參數。將它改爲Long(對象)的技巧。

再次感謝Nickdos!

相關問題