Spring MVC会话:预期的会话属性';用户';,已经在开会了

Spring MVC会话:预期的会话属性';用户';,已经在开会了,spring,session,Spring,Session,我正面临 org.springframework.web.HttpSessionRequiredException: Expected session attribute "Money" 以下是一系列步骤: 1) 用户从控制器获取一个页面:Finance/MoneyCreation @Controller @RequestMapping("/Finance/*") @SessionAttributes({ "Money", "MoneyForm"}) public class MoneyCon

我正面临

org.springframework.web.HttpSessionRequiredException: Expected session attribute "Money"
以下是一系列步骤:

1) 用户从控制器获取一个页面:Finance/MoneyCreation

@Controller
@RequestMapping("/Finance/*")
@SessionAttributes({ "Money", "MoneyForm"})
public class MoneyController {


  @RequestMapping(value = "MoneyCreation", method = RequestMethod.GET)
   public String openMoneyLandingPage(@ModelAttribute("Money") Money money,
   Model model) {
   model.addAttribute("MoneyForm", form);
   return "/okonomi/okonomiregister";
}
在上面的控制器中,会话属性Money没有在其他地方设置(这是必需的吗?)。现在,从UI中,我必须在单击按钮时打开一个对话框,该对话框执行以下操作:

AjaxController:财务/创建/货币

@Controller
@RequestMapping("/Finance/*")
@SessionAttributes({ "Money", "MoneyForm" })
public class AjaxMoneyController{

@RequestMapping(value = "create/money", method = RequestMethod.POST)
 public String openDialogBox(@ModelAttribute("Money") User user, Model  model) {

return "/commonProcess/dialog/MoneyDialog";
}   
单击按钮;我面对:

org.springframework.web.HttpSessionRequiredException: Expected session attribute "Money"

是否需要在其他地方设置金钱?

是的,在引用该属性之前,需要将其放入http会话中

引用非常好的Spring文档(你也应该研究一下!),你会看到一个阅读示例

if (!model.containsAttribute("site")) {
    model.addAttribute("site", new PetSite());
}

“site”是SessionAttribute(在您的情况下类似于“money”)

您需要在使用该对象之前将其加载到会话中。标准方法是使用
@modeldattribute
方法:


getMoney()
将在每次请求之前被调用。

在UI中,我添加了conv id,这个问题得到了解决

var convId = $('#formId').find('input[name="_CONV_ID"]').val();

所以我将在MoneyController中执行此操作?尝试itI现在已经在openMoneyLandingPage()中添加了此代码->if(!model.containsAttribute(“bruker”){System.out.println(“added bruker”);model.addAttribute(“bruker”,bruker);……但它不起作用。}嗯,除了提到优秀的Spring文档之外,很难告诉您在您的情况下该怎么做,因为(至少对我来说)很难很好地了解您试图实现的目标。对不起,这肯定不是问题的解决方案。
var convId = $('#formId').find('input[name="_CONV_ID"]').val();