1

该应用程序比这更复杂,因此我尝试提取代码的相关部分。

Web 应用程序的流程是我通过调用selectItemForOrder()方法从列表中选择执行商店。

executionShop 的 id 设置正确。

但是当我按下调用finishOrder()我得到的方法的 finishOrder 按钮时NullPointerException。我如何传输数据,因为我相信控制器类被破坏并且当我按下 finishOrder 按钮时会创建一个新的控制器。

将 id 保存在数据库中不是一种选择(这是我要解决的问题)。

对不起,如果这是一个微不足道的问题。我是 Spring MVC 的新手。

public class MyController {

private Integer executingShopId;

public View selectItemForOrder() {

setExecutingShopId(1);
return View;
}

public View finishOrder() {

System.out.println("Shop id: " + getExecutingShopId());
computeOrder(executingShopId);
return View;
}
}
4

2 回答 2

1

是的,您可以使用以下隐藏字段在 jsp 页面上保持 id 的值:

<form:hidden path="id"/>
于 2013-03-12T08:38:50.077 回答
1

你是不是改了Controller的配置?对于默认控制器是单例模式,因此您的代码不会导致问题。如果你改变了Controller是原型模式的配置,就会导致问题。绝对可以将值存储在隐藏中,但我建议您将值存储在会话中,因为它更有意义且更安全。

public View selectItemForOrder(HttpSession session) {

session.setAttribute(XXXX,YYY);
return View;
}

public View finishOrder(HttpSession session) {
Session.getAttribute(XXXX)
System.out.println("Shop id: " + getExecutingShopId());
computeOrder(executingShopId);
return View;
}
于 2013-03-12T08:53:47.647 回答