gpt4 book ai didi

JavaBeans 与复杂类型一起使用

转载 作者:行者123 更新时间:2023-11-30 05:05:21 27 4
gpt4 key购买 nike

我不确定我是否正确地标记了这个问题。但我想做的是将 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 自己。以下代码片段中的最后一行基本上执行 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 标记。

关于JavaBeans 与复杂类型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5292727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com