java - 用于复杂类型的JavaBeans

  显示原文与译文双语对照的内容

我不确定我是否正确地标注了这个问题。 但是我要做的是映射一个Javabean来形成我拥有的输入。 除了Bean包含一个复杂的类型属性,我想映射到( 我想把它映射成特定的属性) 。 让我用代码解释。 我有个游戏课:


public class Game
{
 private GameStatistics gameStats;
public GameStatistics getGameStats() {

 if(gameStats == null){
 gameStats = new GameStatistics();
 }
 return gameStats;
}

public void setGameStats(GameStatistics value) {
 gameStats = value;
}
}

我有一个GameStatistics类:


private int amountOfNumbersToMemorise;
public int getAmountOfNumbersToMemorise() {
 return amountOfNumbersToMemorise;
}

public void setAmountOfNumbersToMemorise(String value) {
 amountOfNumbersToMemorise = Integer.parseInt(value);
}

然后在我的JSP中,我有类似的东西:


<jsp:useBean id='game' scope='session' class='Classes.Game'/>


 <form method="Post" action="numberDisplay.jsp">
 Enter your username: <input name="username" type="text"/> <br/>
 How many numbers to remember: <input name="gameStats.amountOfNumbersToMemorise" type="text"/> <br/>
 <input type="Submit" value="Show me the numbers!"/>
 </form>

上面的页面转到另一页:


<jsp:useBean id='game' scope='session' class='Classes.Game'/>
<jsp:setProperty name="game" property="*"/>
//more code here
 <ul>
 <% for(int x=0; x <game.getNumbersToMemorise().size(); x++)
 {%>
 <li><%=game.getNumbersToMemorise().get(x) %> </li>
 <% } %></ul>
//more code

我没有包含一些属性,因为它们不重要,但我不能将输入的数字映射到复杂类型的属性。

我不能使用 MVC,因为这是一个任务,我们必须这样做:(

这样做有意义我对 Java ( 我是 C# 人) 非常新兴,所以有任何帮助将大大感谢你:?

时间:

如果限制为 jsp:useBean/jsp:setProperty,那么需要预先创建两个 bean,然后将子bean设置为父bean的属性。 下面的代码Fragment中的最后一行基本上是 game.setGameStatistics(gameStatistics)


<jsp:useBean id="game" class="com.example.Game" scope="session"/>
<jsp:setProperty name="game" property="*"/>
<jsp:useBean id="gameStatistics" class="com.example.GameStatistics" scope="request"/>
<jsp:setProperty name="gameStatistics" property="*"/>
<jsp:setProperty name="game" property="gameStatistics" value="${gameStatistics}"/>

还要确保输入字段名称与确切的bean属性名匹配。 因此不使用


<input name="gameStats.amountOfNumbersToMemorise">

只是只是


<input name="amountOfNumbersToMemorise">

并确保两个bean不共享相同的属性名。


然而,我热烈建议一个基于Java的MVC框架,比如JSF或者 Spring MVC,而不需要使用旧的jsp:useBeanjsp:setProperty 标签。

使用类似的东西:

<input name="dontworryaboutinputname" type="text" value="${gameStats.amountOfNumbersToMemorise}"/>

...