我不确定我是否已经正确地标记了这个问题。但我要做的是将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#人员)所以任何帮助都会非常感谢,谢谢:)
答案 0 :(得分:2)
如果您被限制为jsp:useBean
/ jsp:setProperty
,那么您需要事先自己创建两个bean,然后自己将子bean设置为父bean的属性。以下代码段中的最后一行基本上是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:useBean
和jsp:setProperty
标签。
答案 1 :(得分:0)
使用类似的东西:
<input name="dontworryaboutinputname" type="text" value="${gameStats.amountOfNumbersToMemorise}"/>