【问题标题】:Spring MVC- Change/modify Model/Session Attributes dynamicallySpring MVC-动态更改/修改模型/会话属性
【发布时间】:2016-11-25 07:57:04
【问题描述】:

我是 Spring MVC 的新手,遇到以下问题:我在 JSP 中有一个下拉列表,该下拉列表是从我在控制器中设置的属性(从模型中检索)填充的。我还有一个输入框,用户可以使用它向下拉列表中添加新选项。

我正在使用 jquery ajax 将输入框中输入的值发送到控制器处理程序,对其进行验证并将其添加到模型中。完成此操作后,我希望使用此新值更新下拉列表,而无需刷新页面。我意识到这可以通过使用 jquery(将更新的列表添加到选择元素)来完成,但如果可能的话,我更愿意通过更改填充下拉列表的属性来做到这一点。

我尝试在创建视图的控制器处理程序中使用 'session.setAttribute("mykey","listofvalues") 并在 jsp 选择元素中使用 ${mykey} 来检索它,一切正常。然后,我在将新值添加到列表的处理程序中检索了会话属性。但是即使在控制器中更新了属性后,jsp 下拉菜单仍然显示旧列表。

我做错了吗?我要做的就是将新项目添加到同一页面上的下拉列表中,而无需重定向/刷新页面。无论如何修改会话或模型属性并动态查看jsp中的更改?

谢谢。

【问题讨论】:

    标签: jquery ajax spring jsp servlets


    【解决方案1】:

    通过将 Angularjs 与 Spring MVC 集成来获得所需的结果,如下所示:

    http://websystique.com/springmvc/spring-mvc-4-angularjs-example/

    【讨论】:

      【解决方案2】:

      答案有yesno

      Yes您可以从会话对象中动态更改或添加或删除值。

      No 页面渲染后,您无法重新渲染页面。

      jsp 页面在运行时呈现,然后发送回客户端计算机。所有的渲染都已经完成。因此,即使您更改了会话数据,它也不会在您的页面刷新之前反映出来。

      您所能做的就是发送一个 AJAX 调用并使用 jquery 更新 DOM。

      【讨论】:

      • 谢谢,确实有道理。只是为了确定是否有任何其他方式可以实现动态绑定,以便控制器中属性的更改将动态反映在视图中?任何其他库/框架可以让我们这样做吗?
      • 据我所知没有,也不可能,因为它是服务器和客户端数据。任何服务器操作都不能更改客户端代码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2018-12-15
      • 1970-01-01
      • 2019-08-11
      • 2017-01-05
      • 2014-11-10
      相关资源
      最近更新 更多