【问题标题】:Spring MVC support for dynamically populating select boxSpring MVC 支持动态填充选择框
【发布时间】:2009-07-01 05:43:48
【问题描述】:

Spring 2.5(或 3.0)是否支持根据用户从另一个表单元素中选择的内容动态填充选择列表?

例如,如果您有一个包含 2 个选择(汽车)品牌和型号的表单。当用户从第一个列表中选择一个品牌时,模型选择应该会填充该品牌的可用模型。

我可以使用 jquery/Javascript '手动'完成,但想知道 Spring MVC 中是否有任何可用的功能来减少所需的腿部工作。

【问题讨论】:

    标签: java model-view-controller spring spring-mvc


    【解决方案1】:

    这是关于如何填充它的视图和策略。因此,您可以应用两种策略:

    1. 做一个真正的服务器往返并评估第一个下拉框给出的值以填充第二个。这可以通过非常基本的 Spring MVC 方法(基于传统继承的控制器模型的 isFormChangeRequest 或简单地在基于注释的模型中提供与 @RequestMapping 映射的方法来完成。
    2. 使用 JavaScript 库并提供专用 URL 以根据第一个框的值读取第二个框的值。 JQuery 可能是一个好的开始,但您也可以看看 SpringJS(包含在 Spring WebFlow 发行版中)。

    你看,实际上这是一个关于你对 JavaScript 的使用、服务器往返或通过网络传输的数据量有多保守的问题。

    【讨论】:

    • 你想知道 SpringJS 在填充选择列表方面提供了什么支持吗?
    • 除了浏览参考文档外,我没有做太多事情,但似乎支持内置 AJAX 请求:static.springframework.org/spring-webflow/docs/2.0.x/reference/…
    • 它并不是我真正感兴趣的 ajax 请求。当第一个值发生变化时,我对第二个选择的实际填充更感兴趣。不过会仔细看看 SpringJS,谢谢。
    【解决方案2】:

    如前所述,Spring 并没有真正帮助或阻碍你这样做。

    本文有一个完整的 Spring 3 示例,使用 jQuery 进行动态填充。

    Spring @MVC 3 使用 jQuery 的级联选择 http://bit.ly/sQQHfA

    【讨论】:

      【解决方案3】:

      Spring MVC 实际上只是控制器,所以不,它不支持这种功能。

      我这样做的方法是使用JQuery 并在选择汽车品牌时对服务器进行AJAX 调用以获取模型列表,然后动态填充选择框。

      【讨论】:

      • Spring MVC 不仅仅是控制器,而且已经包含了对客户端 javascript 的一些支持。我知道我可以自己用 javascript 来做,但我对 Spring 是否实现了对它的支持感兴趣。
      • 我用了一年多,估计有点过时了。当我开始看到管理表单的框架时,让我想起了 Struts 1 的糟糕回忆。从那时起,我一直更喜欢使用 Javascript 从我用来动态填充表单的服务器中检索 XML。
      【解决方案4】:

      这不是动态的,并且会重新加载整个页面,但是您可以通过将更新实现为表单更改请求来仅使用 Spring MVC 执行此操作。这需要在 SimpleFormController 中覆盖 isFormChangeRequest 和 onFormChange。

      【讨论】:

      • 嗨,Mark - SimpleFormController 不是在响应表单帖子并随后在浏览器中刷新整个页面吗?
      • 是的,我会更新我的答案以明确提及这一点。
      • 我正在使用基于 2.5 注释的控制器
      【解决方案5】:

      Spring 还不支持根据另一个列表中的选择动态填充列表。 SpringJS 提供了唯一的客户端 JavaScript 功能,其中包括对表单元素装饰的支持。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 1970-01-01
        • 2019-07-13
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多