作者gto770 (人多更寂寞)
看板java
标题[问题] struts2 interceptor vaildation的问题
时间Thu Feb 7 14:46:07 2013
小弟刚学习struts2+spring+hibernate的架构不久,有一个问题困扰我很久,不知道
怎麽解决,不知道版上有没有高手能够帮忙解决这个问题或是提供一些方向?
问题是这样的,在struts中有使用了defaultStack,有一支表单的程式(prodedit.jsp)
需要做验证,prodedit.jsp将表单送出至ProdAction去做该做的事情,在那之前要被
拦截器拦截做验证,当中有配置了一个ProdAction-validation.xml的档案
prodedit.jsp中每个栏位都必须填写, 当中有一个prodPrice的栏位,这个栏位在
ProdAction中的属性是Integer的型态,而且因为这栏位强迫必须填写,所以我们在
ProdAction-validation.xml中会去定义 <field-validator type="required">
问题来了,如果今天我在prodPrice这个栏位中填入了"12a",因为他不是Integer
,所以会被defaultStack中的conversionError所拦截,最後在fieldError里面就会
出现两个ErrorMessage: 1.Invalid field value for field "prodPrice"
2.价钱栏位不能为空白(这是自己设置的)
简单来说,不希望他同时出现两个讯息,不知道板上有没有人对於这个问题有没有什麽
看法能够提供小弟去处理他。
这边先说明一下,我有先上网google过了,网路上有人说把defaultStack中的
conversionError这一个interceptor拿掉就好了,这也许是一个办法,但我想说如果
不去动到他defaultStack的情况之下,是否有更好的解决办法??
另外,我其实透过自己写一个interceptor也可以解决,就是不使用他的
defaultStack的interceptor,但这个做法跟上述其实没什麽差别,就是别用
conversionError这一个interceptor而已,所以我想知道的是,如果要用
conversionError这一个interceptor的情况之下,是否能够解决刚刚所叙述的两个
错误讯息的这一个问题??
文章有点长,感谢大家耐心看完
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.75.169.115
1F:推 d1288999:其实你可以在送出之前用js检查就好了啊@@也可以显示讯息 02/07 16:15
2F:→ gto770:用JS检查我知道 但是JS治标不治本~~问题的核心也还是存在 02/07 16:49
3F:→ cyclone350:why JS治标不治本?我练习是用jquery-plugin-validation 02/07 17:43
4F:→ cyclone350:另外听说现在新的东西几乎都是用springMVC,是真的吗? 02/07 17:45
5F:→ qrtt1:client side 检查不可信。 02/07 17:49
6F:推 cyclone350:请问在怎样的情况,会使用 client sid e的检查 02/07 18:09
7F:→ cyclone350:还是通常在 client 跟 server 都会做检查? 02/07 18:19
8F:→ PsMonkey:client 检查→缩短回应时间,server 检查→防止恶搞 02/07 22:51
9F:→ gto770:一般来说client跟server端都会作~~client的检查容易被破 02/08 00:02
10F:→ gto770:server的检查才是最後一道防线阿~~ 02/08 00:04
11F:→ gto770:对於文章提出的问题有人有什麽方向可建议吗??高手出来吧XD 02/08 00:07
12F:推 song760211:为什麽不把检查写在action,而执着用struts的验证 02/10 11:37