`
SSailYang
  • 浏览: 312691 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使 Spring MVC tags 支持多 model

阅读更多

问题解释:用过 Spring MVC tags 的朋友都知道,要想将 表单元素的 value 与 相应的 bean 属性对应,需要在 <form:form> 里设置 commandName,spring mvc 会根据这个值在 requestContext 或 sessionContext 里面查找相应的 model,但是这样会是每个 <form:form> 表单只能使用一个 model,这降低了使用的灵活性。

 

其实导致这一问题的原因是 spring mvc 根据 form tag 中 path 属性查找 bean 及其属性的算法。

 

在 spring mvc 的 AbstractDataBoundFormElementTag.java (名字真长)中的 getBindStatus 方法中有这么一句:

String pathToUse = (nestedPath != null ? nestedPath + getPath() : getPath());

 其中的 nestedPath 默认为 "command.",就是默认的 commandName 加上一个点。如果设置了 commandName,nestedPath 的值就是相应的 commandName 加上一个点。而 path 的指就是相应 tag 中的 path 属性(像 input、select 等 tag 都是继承了这个 tag)。所以如果 nestedPath 不为空的话 pathToUse 就是 commandName.path。之后 spring mvc 就会根据 pathToUse 的值将 tag 的 value 和相应的 bean 的属性进行绑定。知道这一点我想你就知道如何是 spring mvc tag 支持多 model 了。

 

具体怎么做这里就不说了。懒了,呵呵。

3
0
分享到:
评论
2 楼 SSailYang 2008-08-21  
form 没有 path 属性。

后来在使用中发现,修改后的代码不能将表单中的值正确的映射到 bean 相应的属性中,看来还是失败了。要改的东西太多。

不过可以使用变通的方法。在 command object 加入多个model。

具 Spring MVC 开发者介绍, Spring 3.0 会考虑让 Spring MVC 的绑定更加灵活。
1 楼 kidd3166 2008-08-20  
还是不明白,你的意思是<form:form> 不写成 <form:form path="XXXX">?
然后在input 的地方写上
<form:inout path="XXXX.name" />
<form:inout path="YYYY.name" />

 

相关推荐

    Spring MVC Helloword代码

    Spring MVC 是一个基于Java的...随着你对Spring MVC的深入学习,你可以了解到更多高级特性,如数据验证、国际化、异常处理、Ajax支持、RESTful API设计等。这只是一个起点,Spring MVC的强大功能等待着你去探索和利用。

    Spring-MVC-3.0.rar_Java spring mvc_spring mvc_spring ppt

    7. **New tags in JSP tags library**:提供了更多的JSP标签库,简化视图层的开发。 **实战指南PPT内容** 这份PPT很可能涵盖了Spring MVC 3.0的基本概念、配置、控制器、模型绑定、视图解析、拦截器以及如何构建...

    spring mvc简单的例子和教程

    首先,Spring MVC的核心概念包括DispatcherServlet、Controller、Model、View和ViewResolver。DispatcherServlet是Spring MVC的前端控制器,它负责接收HTTP请求,并根据配置将请求分发到相应的Controller处理。...

    struts VS spring mvc

    1. **灵活性**:Spring MVC 相比 Struts 更加灵活,支持更多的视图技术和数据访问技术。Struts 的结构较为固定,虽然易于上手,但在特定场景下可能会显得不够灵活。 2. **性能**:Spring MVC 在性能方面优于 ...

    Spring MVC入门

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。本教程旨在帮助新手快速入门Spring MVC,掌握其基本概念和使用方法。 首先,我们需要理解MVC设计...

    对比分析Struts和Spring两种MVC框架参照.pdf

    尽管在某些技术特性上已落后于新兴的框架,如Spring MVC,但Struts仍然因其稳定性、成熟度和广泛的社区支持,被视为项目开发中的可靠选择。 Struts框架的核心架构包括一系列相互协作的类、Servlet以及JSP标签库。它...

    对比分析Struts和Spring两种MVC框架.pdf

    【Struts 框架详解】 Struts 是 Apache 软件基金会的 Jakarta 项目中的一个核心框架...而 Spring MVC 则代表了现代 web 应用开发的趋势,尤其是对于大型、复杂的企业级项目,Spring 框架的整体生态提供了更多的便利。

    Eclipse配置SpringMVC源码

    SpringMVC是Spring框架的一部分,它为构建基于Java的Web应用程序提供了一个模型-视图-控制器(MVC)架构。Eclipse作为流行的Java IDE,为开发者提供了强大的工具来支持SpringMVC的开发。 首先,我们需要确保Eclipse...

    [Spring MVC] -简单表单提交实例

    在Spring MVC框架中,表单提交是Web应用中常见的用户交互方式。本篇文章将深入探讨一个简单的表单提交实例,帮助开发者理解如何在Spring MVC环境中处理表单数据。 首先,我们来看User模型类,它是表单数据的载体。...

    spring WEB入门级项目搭建

    在本教程中,我们将深入探讨如何搭建一个基于Spring框架的Web入门级项目,重点是使用Spring MVC和Spring JDBC实现简单的用户登录功能。Spring是一个广泛使用的Java企业级应用框架,而Spring MVC是它的一个核心模块,...

    spring 最新框架jar

    Check out the [spring][spring tags] tags on [Stack Overflow][]. [Commercial support][] is available too. ## Issue Tracking Report issues via the [Spring Framework JIRA][]. Understand our issue ...

    springmvc学习demo

    2. **标签库**:Spring MVC 支持 JSTL(JavaServer Pages Standard Tag Library)和其他自定义标签库,如 Tiles 或 Struts Tags。这些标签库可以简化视图层的开发,提供重用和维护性。例如,JSTL 中的 fmt 和 c 标签...

    spring2.5+strust1+hibernate3.0JAR包集合

    Spring还提供了数据访问、Web、事务管理等多方面的支持,使得开发人员能够更专注于业务逻辑。 Struts1.X,是Apache基金会的一个MVC(Model-View-Controller)框架,主要应用于Web应用程序的开发。在Struts1中,控制...

    springmvc-demo01-start.zip

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在本入门案例 "springmvc-demo01-start.zip" 中,我们将探索如何...

    Struts和Spring源代码包

    Struts主要用于MVC(Model-View-Controller)架构,而Spring则是一个全面的企业级应用框架,提供了包括依赖注入、面向切面编程、事务管理在内的多种功能。 Struts框架: 1. **MVC模式**:Struts是一个基于MVC设计...

    springmvc-form表单的使用

    - 在JSP页面中使用`&lt;%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %&gt;`来引入Spring MVC的表单标签库。这个步骤非常重要,因为Spring MVC的表单标签库提供了一系列用于创建HTML表单元素的...

    mvcdemo

    总结,`mvcdemo`项目是一个用于演示Spring MVC核心功能的实例,涵盖了Controller、视图渲染、数据绑定、异常处理等多个方面。通过学习和实践这个项目,你可以深入理解Spring MVC的工作原理及其在Web应用开发中的应用...

    Struts+hibernate+spring学习实例

    Struts是MVC(Model-View-Controller)设计模式的一个实现,主要处理Web应用的表示层逻辑。它通过Action类处理用户请求,控制流程,并将数据传递给视图进行展示。在Struts框架中,配置文件(struts-config.xml)定义...

    孙卫琴精通Struts:基于MVC的JavaWeb设计与开发课件.rar

    7. **国际化与本地化**:学习如何在Struts中实现多语言支持,使应用程序更具全球化特性。 8. **异常处理**:理解Struts的异常处理机制,如何定义自定义异常和错误页面。 9. **Struts与Spring集成**:如果课程深度...

    Struts和Spring的整合

    Struts作为MVC(Model-View-Controller)框架,主要用于处理HTTP请求和控制应用流程,而Spring则是一个全面的后端解决方案,提供依赖注入、事务管理、AOP(面向切面编程)等功能。当这两个框架结合使用时,可以实现...

Global site tag (gtag.js) - Google Analytics