12
回答
springMVC的问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
在struts2中,在action中的属性只要提供了get和set方法,在页面中都可以使用已而表达式获取。为什么在springMVC做不到呢?我也想实现这个问题应该怎么去设置呢?
举报
吕檀溪
发帖于4年前 12回/1K+阅
共有12个答案 最后回答: 4年前

springmvc的数据绑定是在Controller类的方法参数里对应写上就可以了,连getter,setter都不用写,也很方便。用成员变量绑定也得从线程方面考虑。struts2的Action类都是prototype的,用属性绑定参数不会出问题。SpringMVC的Controller类不加scope=prorotype的话默认是spring管理的singleton,一般也不加的,用成员变量绑定参数必然会有多线程参数绑定混乱的问题。

--- 共有 5 条评论 ---
吕檀溪回复 @cgcgbcbc : 这个没用过哟。很多地方都不是很了解 4年前 回复
cgcgbcbc回复 @吕檀溪 : model.setAttribute呢? 4年前 回复
吕檀溪那要怎么做呢?不这样写request.setAttribute("all", list);在页面用${}去拿都会是NULL。我不想setAttribute 4年前 回复
Gillian_Male回复 @吕檀溪 : 不是的吧 4年前 回复
吕檀溪那是不是非得使用request.setAttribute才能在页面上取值呀? 4年前 回复
因为不一样,struts2每次请求一个action实例,spring mvc 一个controller 对应所有的请求,所以controller是无状态的,无状态就是说不会记录用户提交的数据。因为所有的人都要用这个controller 所以它不能像struts2那样用对象的属性来保存用户的数据。你可以将对象放到modelmap里面去,放到modelmap里面去的对象,会在resolver view的时候一起放到request里面,你在前台直接用EL表达式取就可以了。至于你说的request.setAttribute 很少有人会那样做,你在你的controller方法里面声名一个 Model类型的参数 然后把数据放到这个model里面就可以了,页面自然可以取到。你可以看看它的源码,个人认为spring mvc的代码很不错,而且可定制化程度远高于struts2。阅读一下源码,就会明白他们的区别了
顶部