作者kiwatami (悠游自在)
看板java
标题Re: [J2EE] Spring MVC Form Validation 问题
时间Sat Feb 15 22:17:21 2014
※ 引述《ek0424 ()》之铭言:
: 各位板上的大大好,最近小弟在学习spring这个framework
: 在开发过程中有遇到一个问题,在网路上寻找许久的资料还是无解
: 目前因为前端部分有大量的表单栏位要做格式验证处理,所以我参考了
: http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/
: 但是却发现有个问题如下:
: 1.不用Form表单做的话,可以达到同样的验证效果吗?
我没用过这个功能
不过这点应该自己试一次就可以知道有没有用了
如果不行的话
可以自己写一个Mapping参数值到POJO的功能
再传入另一个method
效果应该一样
例如:
// Mapping
Customer customer = ReflectionUtil.mapping(request, Customer.class);
// Do validation and insertion
String view = this.doAddCustomer(customer);
private String doAddCustomer(@Valid Customer customer);
不过我自己在做後端表单验证都是自己写
毕竟有些参数验证还满麻烦的
你可以试试用Spring的Interceptor
在进入Controller之前就做好验证
并根据是否为ajax要求做不同的回应内容
如此一来你的验证程式码都会在固定的一包package里面
(如controller.interceptor.validation)
还可以用spring的xml配置随意更换而不用动到原始码
: 2.如果我的Form表单想用Ajax处理,然後一样有验证效果该怎麽做?
有一个偷吃步的方法
就是将Form表单的target指定给一个隐藏的iframe
这样就跟平常submit form的流程差不多了
只不过回应内容要另外处理
不然就把表单内容放在DIV里
在iframe里用parent.doReplaceForm($("div").html());
应该也可以吧XD?
如果你是想将form表单直接由ajax的方式传送参数
可以使用
$(document.formName).serialize();
做为ajax的data参数值
即可传送整张表单的所有栏位
: 3.因为练习接案子,对方要求要有API文件,然後用JSON格式作沟通
: 很多表单的东西,都不是传JSON作处理,该怎麽改成都用JSON沟通?
: 不知道有没有大大有经验,可以指点小弟一下。
後端的json处理我是使用google的gson套件
不知道你有没有使用Maven
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
</dependency>
之後你只要在你的Data Bean加入以下method
public String toJson(){
return new GsonBuilder().disableHtmlEscaping().create().toJson(this);
}
就可以取得json格式的字串
到前端再使用jQuery parsing
var json = $.parseJSON(jsonMessage);
var status = json.status;
var message = json.message;
当然有更简单的方式
例如将dataType直接指定为json
其实JSON就是个格式化的字串
这样想之後会简单一点
就是字串传来传去嘛 哈哈哈
有物件解释就够了
以下是题外话
其实我不太推荐在view里用太多的taglib或是什麽其他一大堆功能
基本上我的view里面是回圈居多
if else的判断式尽量在後端就处理完
拿最简单select element输出做范例
大概会长这样
<loop>
<select>
<option value=${value} ${selected}>$display</option>
</select>
</loop>
除了loop(偷懒一下)之外
其他都是设计师可以看懂的
或是不需要看懂也没关系的
非必要的东西不写在view里
所以我套版完成後跟一开始设计师给的HTML原始码差异都不大
若要改版面需要重新沟通、重新套版都很方便
用很多程式相关的标签在view里 反而失去MVC的本意了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.136.166.88
1F:→ kiwatami:loop写错地方XD 懒得改了 那边不是重点 02/15 22:19
2F:推 ek0424:感谢大大您的解说!感觉您的程式码一定很精简~学习了。 02/16 12:58
3F:推 ek0424:若有程式码完整范例就更好了!XD 02/16 13:12
4F:→ kiwatami:没那麽闲啦XD 02/16 23:44