xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-21 15:56:03 标题:
|
|
|
spring嘟嘟 写道:
|
xiaoyu 写道:
|
我的项目就是用spring mvc的..不好用呀......以前讨论过.
觉得webwork2不错...
就单单spring mvc的表单数据绑定就问题很多.
再就是的验证. |
绑定有什么问题?
验证就更没有问题了.. 就写写配置文件而已.
|
用用就知道了...
|
|
返回顶端
|
|
|
spring嘟嘟
BEA Weblogic
性别: 年龄:48 十二宫图: 加入时间: 2004/04/10 文章: 256 来自:
|
时间: 2005-4-21 19:43:54 标题:
|
|
|
xiaoyu 写道:
|
spring嘟嘟 写道:
|
xiaoyu 写道:
|
我的项目就是用spring mvc的..不好用呀......以前讨论过.
觉得webwork2不错...
就单单spring mvc的表单数据绑定就问题很多.
再就是的验证. |
绑定有什么问题?
验证就更没有问题了.. 就写写配置文件而已.
|
用用就知道了...
|
都做了5个项目....
不知道要怎么才算用过?
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-21 22:43:02 标题:
|
|
|
喔。。强。。。
问一下,首先对基本类型的绑定问题(非string),当然form表单元素的值为空时,怎么解决?
2.深层绑定是怎么解决(属性.属性.属性)。
3.对于Data(或者Calendar)类型(其实这个是比较典型的)的解释怎么解决,特别是当不同的Data类型属性不同的格式解释怎么解决?
4.对于session里的值的绑定,怎么解决?
5.对于上传文件,怎么解决?(其实这个我看过解决方法,不过找不到了,不好意思)(文件上传一般经常用的有两种,一种是把流存到数据库,另一种是直接放到服务器的某个文件夹)
6. 对数组(或List)的绑定,例如:表单元素名称elements[0].id,elements[1].id.
OK,希望spring dudu 能把解决方案写出来,谢谢了。。其实说spring mvc不好,是因为我对spring mvc不太了解。起码也只是用在了一个项目上,觉得问题蛮多的,不过很多问题应该是我不了解的原因。。希望spring dudu 帮-帮忙。谢谢
|
|
返回顶端
|
|
|
moxie
Sybase EAServer
性别:
加入时间: 2003/09/16 文章: 96
|
时间: 2005-4-22 18:27:44 标题: Re: 讨论一下spring自己的MVC框架
|
|
|
baichenhong 写道:
|
这里好像没人提到spring自带的MVC框架,我最近研究了一下,感觉很不错。 spring支持多种类型的view,包括jsp、xslt、velocity、pdf、excel等技术。
spring提供多种控制器,其中有简单的对应一个请求的Controller,对应多个请求的MultiActionController,支持form表单和错误绑定功能的SimpleFormController等等,支持url路径重写(你可以以各种后缀名来命名)。
个人感觉非常灵活,有多种控制器可用,struts太死板难用,tapstry复杂难度高
另外从中学到了很多东西,jsp的作用就是实现视图,试图的功能其实很单一的,用来展现数据。
推荐大家研究研究,有什么优缺点大家讨论一下 |
为什么不试试WebWork2呢?
|
|
返回顶端
|
|
|
winterwolf
Weblogic Cluster
加入时间: 2005/01/01 文章: 360
|
时间: 2005-4-23 10:42:17 标题:
|
|
|
表单的验证和struts的没什么区别吧 ? 是个通用的验证工具在哪里都可以借用.
|
|
返回顶端
|
|
|
pikachu
Oracle9iAS
加入时间: 2004/05/08 文章: 161
|
时间: 2005-4-23 20:50:15 标题:
|
|
|
引用:
|
问一下,首先对基本类型的绑定问题(非string),当然form表单元素的值为空时,怎么解决? |
在controller中
java代码:
|
protected
void initBinder(HttpServletRequest request, ServletRequestDataBinder binder)throwsException{ binder.registerCustomEditor(Integer.class,new CustomNumberEditor(Integer.class,true)); }
|
或者在spring的配置中配置CustomEditorConfigurer
引用:
|
2.深层绑定是怎么解决(属性.属性.属性)。 |
把你的input命名为 xxx.yyy command中写上 getXxx .它返回的对象有setYyy方法就ok了
引用:
|
3.对于Data(或者Calendar)类型(其实这个是比较典型的)的解释怎么解决,特别是当不同的Data类型属性不同的格式解释怎么解决? |
原理同第一个,不过换成CustomDateEditor,这个构造传入一个DateFormat对象
引用:
|
4.对于session里的值的绑定,怎么解决? |
controllor有sessionForm属性。不过这里有个陷阱。在spring的AbstractCommandFormController中有getCommand方法。如果form被设置成sessionForm,那么这个方法会从session中获取command,但是马上就把command从session中删了
java代码:
|
protected
final
Object getCommand(HttpServletRequest request)throwsException{ if(!isSessionForm()){ return formBackingObject(request); } HttpSession session = request.getSession(false); if(session == null){ throw new ServletException("Must have session when trying to bind (in session-form mode)"); } String formAttrName = getFormSessionAttributeName(request); Object sessionFormObject = session.getAttribute(formAttrName); if(sessionFormObject == null){ throw new ServletException("Form object not found in session (in session-form mode)"); } session.removeAttribute(formAttrName); return sessionFormObject; }
|
所以默认情况下,设置成sessionForm的流程是这样的
客户get某个url 因为是get方式,spring判断不是一个submit,调用showNewForm,同时创建一个Command丢到session中 显示formView 客户在form中输入一些内容 submit form被post,spring判断是submit而且是sessionForm。调用getCommand,getCommand把command从sessionForm里删掉 spring调用processFormSubmission然后一直调用到onSubmit,成功的话显示successView。
所以如果command要一直保存在session中的话,需要每次onSubmit中重新把command丢到session中或者索性重写processFormSubmission。后一种方法可以参考AbstractWizardForm的做法
引用:
|
5.对于上传文件,怎么解决?(其实这个我看过解决方法,不过找不到了,不好意思)(文件上传一般经常用的有两种,一种是把流存到数据库,另一种是直接放到服务器的某个文件夹) |
spring没有现成的一站式解决方案,不过可以用org.springframework.web.multipart 下的辅助类 这里是Srping api中的例子
java代码:
|
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartRequest.getFile("image"); ... }
|
你也可以在CommandForm中注册一个ByteArrayMultipartFileEditor 或者StringMultipartFileEditor 至于是要存文件夹还是存数据库,spring帮不了你,不过拿到所有的byte后随便做什么都应该不是什么很困难的事了
引用:
|
6. 对数组(或List)的绑定,例如:表单元素名称elements[0].id,elements[1].id. |
spring支持这种形式的绑定.比如command这样设计
java代码:
|
class Command{ publicList getElements(){//} }
|
当然,这个要求List或者数组中有足够的元素. 我见过另一种做法,是从struts上学来的,自定义一个List实现,重写get方法.
引用:
|
OK,希望spring dudu 能把解决方案写出来,谢谢了。。其实说spring mvc不好,是因为我对spring mvc不太了解。起码也只是用在了一个项目上,觉得问题蛮多的,不过很多问题应该是我不了解的原因。。希望spring dudu 帮-帮忙。谢谢 |
这是robbin的大忌讳,点名贴是要删的
|
|
返回顶端
|
|
|
spring嘟嘟
BEA Weblogic
性别: 年龄:48 十二宫图: 加入时间: 2004/04/10 文章: 256 来自:
|
时间: 2005-4-23 22:46:47 标题:
|
|
|
8好意思,去上海两天刚回来。
已经有人回答了。
不过我想问问啥需求要放在Session里面?
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-23 23:19:50 标题:
|
|
|
首先多谢回答(真是十分多谢,希望加精华,嘻)
可见,spring的mvc是多么的复杂,还没有结束复杂性呢,请耐心,我再问问。。。嘻
引用:
|
引用:
|
问一下,首先对基本类型的绑定问题(非string),当然form表单元素的值为空时,怎么解决? |
在controller中
java代码:
|
protected
void initBinder(HttpServletRequest request, ServletRequestDataBinder binder)throwsException{ binder.registerCustomEditor(Integer.class,new CustomNumberEditor(Integer.class,true)); }
|
或者在spring的配置中配置CustomEditorConfigurer
|
这样设置后,是不是int取到的默认值是0,Integer是null?
引用:
|
引用:
|
2.深层绑定是怎么解决(属性.属性.属性)。 |
把你的input命名为 xxx.yyy command中写上 getXxx .它返回的对象有setYyy方法就ok了
|
如果这个属性是空的(指xxx这个属性),就会出现空指针异常。。请继续
引用:
|
引用:
|
3.对于Data(或者Calendar)类型(其实这个是比较典型的)的解释怎么解决,特别是当不同的Data类型属性不同的格式解释怎么解决? |
原理同第一个,不过换成CustomDateEditor,这个构造传入一个DateFormat对象
|
没有解决我的问题,我是指不同的属性要用不同的格式,例如,我的工作日的格式是yyyy-MM-dd(精确到天),但我的操作时间,要精确到分。
还有对Calendar是不是也可以用你上面的方法呢?
引用:
|
引用:
|
4.对于session里的值的绑定,怎么解决? |
controllor有sessionForm属性。不过这里有个陷阱。在spring的AbstractCommandFormController中有getCommand方法。如果form被设置成sessionForm,那么这个方法会从session中获取command,但是马上就把command从session中删了
java代码:
|
protected
final
Object getCommand(HttpServletRequest request)throwsException{ if(!isSessionForm()){ return formBackingObject(request); } HttpSession session = request.getSession(false); if(session == null){ throw new ServletException("Must have session when trying to bind (in session-form mode)"); } String formAttrName = getFormSessionAttributeName(request); Object sessionFormObject = session.getAttribute(formAttrName); if(sessionFormObject == null){ throw new ServletException("Form object not found in session (in session-form mode)"); } session.removeAttribute(formAttrName); return sessionFormObject; }
|
所以默认情况下,设置成sessionForm的流程是这样的
客户get某个url 因为是get方式,spring判断不是一个submit,调用showNewForm,同时创建一个Command丢到session中 显示formView 客户在form中输入一些内容 submit form被post,spring判断是submit而且是sessionForm。调用getCommand,getCommand把command从sessionForm里删掉 spring调用processFormSubmission然后一直调用到onSubmit,成功的话显示successView。
所以如果command要一直保存在session中的话,需要每次onSubmit中重新把command丢到session中或者索性重写processFormSubmission。后一种方法可以参考AbstractWizardForm的做法
|
我的要求要这么复杂完成呀,我只希望从session里获得我需要的属性值而罢了,例如,我要获得User对象(操作者),然后自动绑定到我的VO里。
引用:
|
引用:
|
5.对于上传文件,怎么解决?(其实这个我看过解决方法,不过找不到了,不好意思)(文件上传一般经常用的有两种,一种是把流存到数据库,另一种是直接放到服务器的某个文件夹) |
spring没有现成的一站式解决方案,不过可以用org.springframework.web.multipart 下的辅助类 这里是Srping api中的例子
java代码:
|
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartRequest.getFile("image"); ... }
|
你也可以在CommandForm中注册一个ByteArrayMultipartFileEditor 或者StringMultipartFileEditor 至于是要存文件夹还是存数据库,spring帮不了你,不过拿到所有的byte后随便做什么都应该不是什么很困难的事了
|
果然。。。。。。。。唉。。。。。。。
引用:
|
引用:
|
6. 对数组(或List)的绑定,例如:表单元素名称elements[0].id,elements[1].id. |
spring支持这种形式的绑定.比如command这样设计
java代码:
|
class Command{ publicList getElements(){//} }
|
当然,这个要求List或者数组中有足够的元素. 我见过另一种做法,是从struts上学来的,自定义一个List实现,重写get方法.
|
你是指我数组或List不能为空吗?getElements()返回的不能是null?如果是null怎么办?
引用:
|
引用:
|
OK,希望spring dudu 能把解决方案写出来,谢谢了。。其实说spring mvc不好,是因为我对spring mvc不太了解。起码也只是用在了一个项目上,觉得问题蛮多的,不过很多问题应该是我不了解的原因。。希望spring dudu 帮-帮忙。谢谢 |
这是robbin的大忌讳,点名贴是要删的
|
呵 可。。在这里认个错,对不起,因为觉得javaeye没有几个去研究这个复杂的mvc所以就,再说spring dudu 用了五个项目,所以希望他能给出一起经验,对学习和推广这个mvc有很大的作用。
谢谢。。。。
to spring dudu:没有关系,嘻嘻。。。。
|
|
返回顶端
|
|
|
pikachu
Oracle9iAS
加入时间: 2004/05/08 文章: 161
|
时间: 2005-4-24 12:22:46 标题:
|
|
|
引用:
|
这样设置后,是不是int取到的默认值是0,Integer是null?
|
不好意思,昨天的回答想当然而。不全对。 正确的答案是,如果要绑定到int基本类型,需要自定义一个IntEditor
java代码:
|
public
class CustIntEditor extends IntEditor{ /* (non-Javadoc) * @see java.beans.PropertyEditor#setAsText(java.lang.String) */ publicvoid setAsText(String text)throwsIllegalArgumentException{ if(text==null||text.equals("")){ super.setAsText("0"); } else{ super.setAsText(text); } } }
|
然后用Integer.TYPE进行注册。
java代码:
|
binder.registerCustomEditor(Integer.TYPE,new CustIntEditor());
|
Integer类型的回答是对的 btw:要是Spring用Ognl绑定估计也不会象现在那么麻烦了。
引用:
|
如果这个属性是空的(指xxx这个属性),就会出现空指针异常。。请继续[/b] |
我想即使是webwork或者tapestry等绑定作的比较好的也不能很好的满足你的要求。本质上,不管用PropertyEditor还是Ognl,任何深层绑定最终都是 a.getB().getC().setD(dValue); 至于当中get链能否正常,全靠自己把握了。考虑到继承和派生,外围框架更不可能知道你的get链中返回的是什么类型,也不可能帮你创一个中间的对象并且set。 一般的做法是写上一段guard
java代码:
|
public B getB(){ if(this.b==null){ this.b=new BImpl(); //guard code here } return this.b; }
|
引用:
|
没有解决我的问题,我是指不同的属性要用不同的格式,例如,我的工作日的格式是yyyy-MM-dd(精确到天),但我的操作时间,要精确到分。 还有对Calendar是不是也可以用你上面的方法呢?
|
说实话我觉得这种要求比较过分 解决方法取决于你的实际情况 如果你对日期的不同精度要求是在两个controllor中那很好办,每个controllor注册自己所需要的日期型的CustomDateEditor。构造时传入不同pattern的format。 如果是在同一个controllor中,那就比较恼火了。因为将一个高精度的值向低精度格式绑定会丢失精度,而低精度的值向高精度格式绑定会出错。用哪个都不满意。 现在我想到的方法是采用最高精度的日期格式。低精度的属性在绑定前把值加0,把自己弄成高精度的样子。不过因为spring自带的formControllor已经把很多写死了,只能在页面上动用script了。 还有个办法是自己写一个Date的PropertyEditor。 Calendar没有默认的PropertyEditor。不过可以参考spring中CustomDateEditor的做法,把string转成Date然后再从Date转成Calendar。
引用:
|
我的要求要这么复杂完成呀,我只希望从session里获得我需要的属性值而罢了,例如,我要获得User对象(操作者),然后自动绑定到我的VO里。
|
spring中bind完全是bean的机制,和session无关。一般只能在controllor中手工从session获得再手工绑定到VO里。 btw,我觉得这个不是也不应该是bind的用途。如果在Spring里,你可以在Controllor中这样写
java代码:
|
protected
Object formBackingObject(HttpServletRequest request) throwsException{ Object cmd=super.formBackingObject(request); if(cmd instanceof UserSettable){ ((UserSettable)cmd).setUser(request.getSession().getAttribute("user")); } // 或者用beanWrapper调用reflect // BeanWrapperImpl bw=new BeanWrapperImpl(cmd.getClass()); // bw.setWrappedInstance(cmd) // bw.setPropertyValue("user",request.getSession().getAttribute("user")); return cmd; }
|
引用:
|
你是指我数组或List不能为空吗?getElements()返回的不能是null?如果是null怎么办?
|
首先不能为空,其次list和数组的长度要足够,最后element要是正确的类型 比如 cmd.elements[1].id=3; 那最后调用样子的必然是 cmd.getElements().get(1).setId(3);而且要保证这条链不能错 同样模仿上面guard,自定义一个list是不错的做法,比如
java代码:
|
class UserList extendsArrayList<User> {
public User get(int index){ if(size()<index+1){ int s=size(); for(int i=s;i<=index-s;++i){ add(i,new User()); }} return super.get(index); } }
|
引用:
|
呵 可。。在这里认个错,对不起,因为觉得javaeye没有几个去研究这个复杂的mvc所以就,再说spring dudu 用了五个项目,所以希望他能给出一起经验,对学习和推广这个mvc有很大的作用。
谢谢。。。。
to spring dudu:没有关系,嘻嘻。。。。
|
我比较另类,第一个看的mvc就是spring,因为从去年下半年才开始接触的java,所以struts什么的都没好好看 如果只是简单的应用,spring mvc功能就足够了。如果应用中有特殊点就需要去弄一些比较烦人的东西。 spring的开发理念和其他常见的项目有很大的区别。它搭好了一个框子,提供很多扩展口。但是提供的最后成品很少。除了ioc,mvc和transcation部分,其他的基本上都是构建在别人的项目上的。而ioc中的beanwrapper又使用了propertyEditor,这个灵活度极其高。mvc部分也很松散,留下很多扩展的空间,可能这就是它自称的plugable的原因之一吧。最终的结果是spring确实很灵活,也有足够的扩展点。但是为了完成扩展又需要看一些非spring的东西。
不过只要有足够时间,看spring代码会学到很多东西的,我倒是挺喜欢的
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23
加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-24 14:28:44 标题:
|
|
|
这个星期最开心的事就是这个了.真是谢谢.太感谢了.
看来我对mvc的了解没有太多的出入,现在只等spring dudu的见解了。
这就是spring的绑定问题(spring dudu先生请看)。
我是自已重写了formData绑定这部分,如果get是一个空对象,我就会建立这个对象(这个对象必须要有一个没参的构造子),并且set。怎么知道这个对象的类型,很简单,其实PropertyEditor能够获得返回类型(return Type),注意这个对象必须是可以构造的class,考虑到PO,所以属性很少可能会是interface和abstract class(集合类除外)。所以对数组一样可以,就算是空对象,也可以建立数组,并且建立数组元素,但对于List就没有很好的办法,因为没有返回类型,除非用元数据(觉得这种方法最没有侵入),或者建立一种自己的格式(表单字段名的约定),然后进行解释。当然对于基本类型是可以很好地进行解释。
有一个朋友说可以在SimpleFormController的formBackingObject(request); 这个方法里设置你需要的get对象。
对于自定义的属性进行不同的解释,一是采用webwork2的做法,在类的目录下同时有一个propreties文件,里面指定要用哪种方法。还有一种是用元数据,这个就是没有其它的配置文件。但却不能随便改变。
可以采用webwork2的做法,所有request,servletContext,session里的值都放到一个context里面去,但优先级,我就不太清楚如何才好。
btw:如果我要获得servletContext里面的值,不知道在spring的controller怎么获得呢?
|
|
返回顶端
|
|
|
pikachu
Oracle9iAS
加入时间: 2004/05/08 文章: 161
|
时间: 2005-4-24 16:42:34 标题:
|
|
|
xiaoyu 写道:
|
这个星期最开心的事就是这个了.真是谢谢.太感谢了.
看来我对mvc的了解没有太多的出入,现在只等spring dudu的见解了。
这就是spring的绑定问题(spring dudu先生请看)。
我是自已重写了formData绑定这部分,如果get是一个空对象,我就会建立这个对象(这个对象必须要有一个没参的构造子),并且set。怎么知道这个对象的类型,很简单,其实PropertyEditor能够获得返回类型(return Type),注意这个对象必须是可以构造的class,考虑到PO,所以属性很少可能会是interface和abstract class(集合类除外)。所以对数组一样可以,就算是空对象,也可以建立数组,并且建立数组元素,但对于List就没有很好的办法,因为没有返回类型,除非用元数据(觉得这种方法最没有侵入),或者建立一种自己的格式(表单字段名的约定),然后进行解释。当然对于基本类型是可以很好地进行解释。
有一个朋友说可以在SimpleFormController的formBackingObject(request); 这个方法里设置你需要的get对象。
对于自定义的属性进行不同的解释,一是采用webwork2的做法,在类的目录下同时有一个propreties文件,里面指定要用哪种方法。还有一种是用元数据,这个就是没有其它的配置文件。但却不能随便改变。
可以采用webwork2的做法,所有request,servletContext,session里的值都放到一个context里面去,但优先级,我就不太清楚如何才好。
btw:如果我要获得servletContext里面的值,不知道在spring的controller怎么获得呢? |
对于自定义属性,要么外部配置,要么用些高级技术 比如jdk1.5的增加的getTypeParameters() formBackingObject确实是formControllor中获取command的方法。如果你没有重写formBackingObject,spring的默认实现使用reflect返回的。 在controllor中可以用onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) 。有了request,我们的生活就会非常美好!!
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23
加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-24 18:21:21 标题:
|
|
|
但有request却是那么的难测试。。唉。。。。
|
|
返回顶端
|
|
|
spring嘟嘟
BEA Weblogic
性别: 年龄:48 十二宫图: 加入时间: 2004/04/10 文章: 256 来自:
|
时间: 2005-4-24 22:05:39 标题:
|
|
|
虽然Spring的Web测试有他自己的Mock
不过我不会对Action这块做测试的,简直是浪费时间。
|
|
返回顶端
|
|
|
spring嘟嘟
BEA Weblogic
性别: 年龄:48 十二宫图: 加入时间: 2004/04/10 文章: 256 来自:
|
时间: 2005-4-24 22:09:40 标题:
|
|
|
这就是spring的绑定问题(spring dudu先生请看)。
我是自已重写了formData绑定这部分,如果get是一个空对象,我就会建立这个对象(这个对象必须要有一个没参的构造子),并且set。怎么知道这个对象的类型,很简单,其实PropertyEditor能够获得返回类型(return Type),注意这个对象必须是可以构造的class,考虑到PO,所以属性很少可能会是interface和abstract class(集合类除外)。所以对数组一样可以,就算是空对象,也可以建立数组,并且建立数组元素,但对于List就没有很好的办法,因为没有返回类型,除非用元数据(觉得这种方法最没有侵入),或者建立一种自己的格式(表单字段名的约定),然后进行解释。当然对于基本类型是可以很好地进行解释。
没看明白,你这段话是在说什么问题。。。
能解释一下吗?
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-24 22:51:27 标题:
|
|
|
呵呵。。其实没有什么。。我只是说了我的解决方案(因为我是重写了formData绑定部分)。
讲到底spring 的mvc是个复杂的MVC。
而且绑定的问题就是我上面提出来的。
不是吗?还不知道spring dudu的解决方案是不是与pikachu一样。
对于spring mvc如果获得context里的值,我还不是很清楚。。
|
|
spring嘟嘟
BEA Weblogic
性别: 年龄:48 十二宫图: 加入时间: 2004/04/10 文章: 256 来自:
|
时间: 2005-4-25 09:04:57 标题:
|
|
|
前面的项目和他差不多.
现在改用xmlhttp做了,所以就没用spring的bind了.
嘿嘿,现在只要写配置文件就好
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-25 17:58:27 标题:
|
|
|
再讲一个spring mvc的问题。
如果一个表单需要多个PO(VO),怎么办?难道除了只写一个包函的VO就没有其它的方法了吗?
|
|
返回顶端
|
|
|
spring嘟嘟
BEA Weblogic
性别: 年龄:48 十二宫图: 加入时间: 2004/04/10 文章: 256 来自:
|
时间: 2005-4-25 19:29:35 标题:
|
|
|
xiaoyu 写道:
|
再讲一个spring mvc的问题。
如果一个表单需要多个PO(VO),怎么办?难道除了只写一个包函的VO就没有其它的方法了吗? |
是的
我没找到...
|
|
返回顶端
|
|
|
大愚弱智
Sybase EAServer
性别: 年龄:24 十二宫图: 加入时间: 2004/08/21 文章: 77 来自: 北京
|
时间: 2005-4-27 17:53:52 标题:
|
|
|
[quote="xiaoyu"]再讲一个spring mvc的问题。
如果一个表单需要多个PO(VO),怎么办?难道除了只写一个包函的VO就没有其它的方法了吗? [/quote]
多个PO?formBackingObject只能返回一个PO(VO),如果要返回多个东东,使用 referenceData返回的是一个Map,在Map里面你爱装傻就装啥。例如一个Map里面装上一个List或Map,然后这个List或Map再装其它的东西,你的需求是不是这样子的呢?
|
|
返回顶端
|
|
|
大愚弱智
Sybase EAServer
性别: 年龄:24 十二宫图: 加入时间: 2004/08/21 文章: 77 来自: 北京
|
|
返回顶端
|
|
|
spring嘟嘟
BEA Weblogic
性别: 年龄:48 十二宫图: 加入时间: 2004/04/10 文章: 256 来自:
|
时间: 2005-4-28 12:24:43 标题:
|
|
|
生成验证的Xdoclet本来就有
运行时怎么会动态更改验证?
我在http://cosoft.org.cn/projects/jsvalidation找到一个js验证framework,这是一个很漂亮的验证framework(只是国产的而已,经理不是很喜欢),不用重新启动服务器,很好用!
这个有什么用,别人关闭JS验证的时候,就不能自动使用后台验证了
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-28 12:59:41 标题:
|
|
|
大愚弱智 写道:
|
xiaoyu 写道:
|
再讲一个spring mvc的问题。
如果一个表单需要多个PO(VO),怎么办?难道除了只写一个包函的VO就没有其它的方法了吗?
|
多个PO?formBackingObject只能返回一个PO(VO),如果要返回多个东东,使用 referenceData返回的是一个Map,在Map里面你爱装傻就装啥。例如一个Map里面装上一个List或Map,然后这个List或Map再装其它的东西,你的需求是不是这样子的呢?
|
不是,我要的是页面-->controller(提交多个PO或VO),不是controller-->页面
|
|
返回顶端
|
|
|
大愚弱智
Sybase EAServer
性别: 年龄:24 十二宫图: 加入时间: 2004/08/21 文章: 77 来自: 北京
|
时间: 2005-4-28 14:09:03 标题:
|
|
|
[quote="spring嘟嘟"]生成验证的Xdoclet本来就有 运行时怎么会动态更改验证? [/quote]
spring生成验证xdoclet的是有的,我用过一阵子,觉得不好用。
不是运行时的更改,而是我们测试的时候频繁的更改配置文件。
后台验证有后台验证的好长,但使用js验证也自然有其好处:那就是可以在客户端验证,不必提交到服务器。
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
时间: 2005-4-30 09:29:22 标题:
|
|
|
大愚弱智:
引用:
|
另外,Spring的可配置客户端验证问题,spring借用struts的验证机制,我用过一阵子,每更改一下配置文件,就得重新启动服务器,感觉不是很好用 |
server端的验证为什么要重启?我想不明白.
spring的验证是可以直接new一个验证类,然后做测试的.有必要用容器吗?
js,是有必要,但如果单单靠js就是找死.
|
|
返回顶端
|
|
|
大愚弱智
Sybase EAServer
性别: 年龄:24 十二宫图: 加入时间: 2004/08/21 文章: 77 来自: 北京
|
时间: 2005-4-30 10:56:34 标题:
|
|
|
checkbox绑定到boolean的问题我还没解决,CustomBooleanEditor它只能绑定到Boolean,而不是boolean,只能使用request.getParameter来取得checkbox的值。
----这个问题谁能帮我解决一下
|
|
返回顶端
|
|
|
大愚弱智
Sybase EAServer
性别: 年龄:24 十二宫图: 加入时间: 2004/08/21 文章: 77 来自: 北京
|
时间: 2005-4-30 13:32:24 标题:
|
|
|
所有的问题都已经解决了!只是你们敢不敢使用新的“SpringMVC”,这个新的“SpringMVC”就是Aurora MVC Framework,在Spring的官方网站有贴出。我下载看了一下,这是SpringMVC的实践着在总结了SpringMVC的各种毛病之后搞出来的一个估计是为替代SpringMVC的框架。
例如对于xiaoyun所说的提交多个bo的问题,上面有解释: With Aurora, the framework uses metadata placed in your configuration files to map request values to your domain objects. Thus, you can edit one object, or even several, on the same form. The framework uses reflection to map each individual request value to your domain object just before your custom processing logic is executed. Of course, you are not locked into this approach since sometimes you won't want to map to domain objects - you can declare non-domain object values in the same way but you can still leverage every other aspect of the framework to keep things consistent. Thus, in almost all cases, you won't have to deal with the HttpServletRequest object at all, but the framework does not shield you from it either like other MVC frameworks do.
对于多选列表问题,它是这样解决的: <SelectMany name="company.types" referenceData="types" validatorId="multireference" errorMessage="There are no company types in the database." > <Text /> </SelectMany>
这是很好的一个MVC框架,可以作为SpringMVC的代替,值得我们好好研究。
|
|
返回顶端
|
|
|
xiaoyu
Weblogic Cluster
性别: 年龄:23 十二宫图: 加入时间: 2003/10/01 文章: 498 来自: 广东
|
|
返回顶端
|
|
|
大愚弱智
Sybase EAServer
性别: 年龄:24 十二宫图: 加入时间: 2004/08/21 文章: 77 来自: 北京
|
时间: 2005-4-30 20:24:31 标题:
|
|
|
我正在研究Aurora MVC Framework,说不准,里面已经解决好了呢。 Aurora MVC Framework的FormController和其它Controller都派生在Spring的Controller,返回的也是ModelAndView。里面还提供了n多的HTML控件,Validator控件,Javascript都附带好了,都是为了解决SpringMVC的很多问题而做的,值得我们这帮SpringMVC狂好好研究一下!
|
|
posted on 2006-09-07 18:04
OMG 阅读(3827)
评论(0) 编辑 收藏 所属分类:
Spring