2 u011314218 u011314218 于 2016.03.15 16:05 提问

input表单查询,不输入值时后台显示 数据类型转换错误,

前台代码:订单号:
后台代码:图片说明
原订单号为long型,后台转为字符串后执行的查询操作。
正常输入订单号查询时,可以查到,但是如果不输入值,直接点击查询会报错。好像是数据类型转换错误。不过我在Java后台不是已经直接做了转换的,怎么还是这样,求解答
严重: Servlet.service() for servlet [spring] in context with path [/xxcnew] threw exception [Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'order' on field 'oid': rejected value []; codes [typeMismatch.order.oid,typeMismatch.oid,typeMismatch.long,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [order.oid,oid]; arguments []; default message [oid]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'long' for property 'oid'; nested exception is java.lang.NumberFormatException: For input string: ""]] with root cause

3个回答

showbo
showbo   Ds   Rxr 2016.03.15 18:07
已采纳

你用该用正则判断是是否为数字,而不是简单的==""这种判断,要是客户端乱输入非数字你代码还不是一样报错

u011314218
u011314218 我现在就是在前台用js给输入框,提交为空时,赋值了0,看起来是很简陋,点击查询,没有值就会跳成0,再执行查询
2 年多之前 回复
u011314218
u011314218 回复无聊码农: 我不太清楚在后台怎么取这个输入框,并做正则判断?看这个是用easuyui的搜索框传值,然后在后台直接用Arraylist,封装为order对象,传给存储过程的
2 年多之前 回复
showbo
showbo 回复闪闪小莫: 不要相信前台提交的数据,后台一定要重新验证过,要不你的这个就是个bug
2 年多之前 回复
u011314218
u011314218 我想到了,可以用js现在前台做判断,空则直接给默认值,后台在正常处理,谢谢
2 年多之前 回复
u011314218
u011314218 我想允许它可以输入为空,那就是在后台用正则表达式进行判断,再处理吗?
2 年多之前 回复
u011314218
u011314218 我想允许它可以输入为空,那就是在后台用正则表达式进行判断,再处理吗?
2 年多之前 回复
u011314218
u011314218 我想允许它可以输入为空,那就是在后台用正则表达式进行判断,再处理吗?
2 年多之前 回复
u011314218
u011314218 我想允许它可以输入为空,那就是在后台用正则表达式进行判断,再处理吗?
2 年多之前 回复
u011314218
u011314218 我想允许它可以输入为空,那就是在后台用正则表达式进行判断,再处理吗?
2 年多之前 回复
u013772876
u013772876   2016.03.15 16:58

看下是否有oid属性;再看看oid__str取得的是什么__

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.15 17:32
   前台执行表单提交的时候判断这个参数是否有值,如果没有给个默认值确保后台不报异常。
u011314218
u011314218 谢谢,
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
form提交,如果某个input不在form标签内,后台是获取不到该input的值的。
form提交,如果某个input不在form标签内,后台是获取不到该input的值的。 所以好多时候研发时,明明已经写在html里了,为什么后台就是获取不到该input的值。
html文本框input表单输入框默认提示信息插件,获得焦点自动清空默认值,失去焦点对比确认默认值
本插件是为输入用户名的提示信息而写的 功能虽然简单但对于做开发的人来说每次写这几行代码也实属繁琐 所以我就把这几行代码写成了jquery的插件以求以后用起来更加便捷 简单说明: 1 可以自动默认提示信息 若不设置则默认值为:用户名 邮箱 2 当input获得焦点时 input的值会被自动清除;当input失去焦点时 会判断输入值与默认值是否一致 如果一致(或空)则再次显示默认提示信息 若不一致(已输入信息)则input值为所输入值 3 此插件是jquery插件 调用方式为 $ "#xxx" autoTip ; 并可以指定input获得焦点和失去焦点的CSS样式 以下为参数说明 + 参数 @input 入参 json对象 @ dvalue input表单提示默认值 @ tip 默认提示信息样式名class @ tipnone 在指定的input执行click时替换的样式名class + 使用方法: $ "#xxx" autotip ; @ #xxx 为需要提示的input的id">本插件是为输入用户名的提示信息而写的 功能虽然简单但对于做开发的人来说每次写这几行代码也实属繁琐 所以我就把这几行代码写成了jquery的插件以求以后用起来更加便捷 简单说明: 1 可以自动默认提示信息 若不设 [更多]
jsp form submit 提交到后台的input元素的值中包含之前查询过的内容
部分jsp页的代码如下:<form method="post" action="/detailInfoController/managerChange" id="managerChangeForm"> <div> <span class="search-p"> <input id="inputTxt" name="keyword" value="${key
input设置为disabled,表单无法提交后台解决方法
<input name="country" id="country" size=12 value="disabled提交时得不到该值 " disabled="disabled" >放在form表单中提交后得不到该值。将disabled=”disabled” 改为 readonly = “readonly” 即可按照W3C的规范: 设置为disabled的input将会有下面的限制: - 不能接
【转载】html文本框(input)不保存缓存记录
html文本框(input)不保存缓存记录 有的时候js往文本框里赋值,结果在火狐中刷新后,刚才赋的值还在,导致好多麻烦的事情,现总结一下解决办法如下: 上面是一种情况,再就是有的时候一个表单提交后,再回来输入会缓存有以前的记录,像这解决办法如下:      function   fnSaveForm(){         window.external.AutoCompleteSave
js判断input输入框为空时遇到的问题 弹窗后,光标没有定位到输入框,而是直接执行我的处理页面程序
无论是会员注册还是提交订单,我们都要使用到form表单,此时我们在处理数据时,就要判断用户填写的信息。一次是直接通过js判断input输入框是否没有填信息,然后在后台处理文件中通过过滤字符串后再次判断是否确实有内容了。 我遇到的问题:(记下来,下次忘记了再回来看看) js判断input输入框判断为空,  弹窗后,光标没有定位到输入框,而是直接执行我的处理数据程序。 我错误的原因是,在js代码
后台怎样获取前台input的值?
在前台input中加入 runat="server" 在后台中String ss = Request.Form["start"];
input控件值获取为null
input的值获取为null的问题: 这种写法控件不可修改,但是同时从controller中获取值为null。 将disabled修改为readonly即可解决问题: 以下是转载: 按照W3C的规范:http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.12  设置为disabled的input将会有下面的限制:  不能接
input设置不可编辑后台获取不到数据
uid" disabled="disabled" value="${ p.id }">disabled="disabled" 这样后台是得不到的 ,可以用readonly="readonly"uid" readonly="readonly" value="${ p.id }"> 这样就可以了
解决文本框刷新后之前输入的值还存在,没有清空的问题
有过表单设计经验的朋友肯定知道,当我们在浏览器中输入表单信息的时候,往往input文本输入框会记录下之前提交表单的信息,以后每次只要双击 input文本输入框就会出现之前输入的文本,这样有时会觉得比较方便,但有时也会暴露用户的隐藏数据,所以今天就教大家让input表单输入框不记录输 入过信息的方法。     其实方法很简单,只需要在input文本输入框中加一条属性autocomplete="