Throws: NumberFormatException - if the string does not contain a parsable integer.直接捕捉这个异常就行了! try { Integer.parseInt("用户输入的数"); } catch (NumberFormatException e) { response.sendRedirect("error.jsp"); }
try { Integer.parseInt("用户输入的数"); } catch (Exception e) { response.sendRedirect("error.jsp"); }在catch里面捕捉到这个异常,然后重定向到错误页面----------------------------------------------------------- 试过了,这个方法行不通,程序一catch到异常就直接显示错误消息了,根本没有重定向到error.jsp页面. 提示错误: org.apache.jasper.JasperException: An exception occured trying to convert String "asd" to type "int"其中"asd"是我输入的数.
^_^,不就是这个异常吗? Throws: NumberFormatException - if the string does not contain a parsable integer.这个是根本就没捕捉,你试一下改一下,将Exception改为jasperException.
if (isNaN(用户输入的数)){ alert("请输入数字!") return false } 在页面上做javascript的校验
1.你可以在客户端中用JS进行验证: function chkPlusInt2(data,msg)//data为需要验证的输入框,msg为提示的对话框内容 { var reg=/^\d*$/gi; var isInt=reg.exec(trimAll(data.value)); if(!isInt) { alert(msg); data.select(); return false; } } 2.如果一定要在java中实现的话,你可以先对该输入框的内容进行判断,判断他是否可以转化成数据,如下: /** * 判断该字符串是否可以转化成数值 * @param str * @return boolean */ public static boolean isParseInt(String str){ boolean flag = true; try{ for (int i=0;i<str.length();i++){ if (-1=="-.0123456789".indexOf(str.substring(i,i+1))){ //if (!str.matches("\\d+")) flag = false; break; } } }catch(Exception e){ return false; } return flag; }
这是判断是否数字和submit时判断的js代码 <script languge="JavaScript"> function Trim(str){ if(str.charAt(0) == " "){ str = str.slice(1); str = Trim(str); } return str; }function isEmpty(pObj,errMsg){ var obj = eval(pObj); if( obj == null || Trim(obj.value) == ""){ if (errMsg == null || errMsg =="") alert("输入为空!"); else alert(errMsg); obj.focus(); return false; } return true; } function isNumber(pObj,errMsg){ var obj = eval(pObj); strRef = "1234567890"; if(!isEmpty(pObj,errMsg))return false; for (i=0;i<obj.value.length;i++) { tempChar= obj.value.substring(i,i+1); if (strRef.indexOf(tempChar,0)==-1) { if (errMsg == null || errMsg =="") alert("数据不符合要求,请检查"); else alert(errMsg); if(obj.type=="text") obj.focus(); return false; } } return true; } function addIt() { var addit=false; if(!isNumber(document.addForm.number,"请输入正确的数字!")){
} else { addit=window.confirm("您确定要添加吗?"); } if (addit){
NumberFormatException - if the string does not contain a parsable integer.直接捕捉这个异常就行了!
try {
Integer.parseInt("用户输入的数");
} catch (NumberFormatException e) {
response.sendRedirect("error.jsp");
}
Integer.parseInt("用户输入的数");
} catch (Exception e) {
response.sendRedirect("error.jsp");
}在catch里面捕捉到这个异常,然后重定向到错误页面-----------------------------------------------------------
试过了,这个方法行不通,程序一catch到异常就直接显示错误消息了,根本没有重定向到error.jsp页面.
提示错误:
org.apache.jasper.JasperException: An exception occured trying to convert String "asd" to type "int"其中"asd"是我输入的数.
Throws:
NumberFormatException - if the string does not contain a parsable integer.这个是根本就没捕捉,你试一下改一下,将Exception改为jasperException.
alert("请输入数字!")
return false
}
在页面上做javascript的校验
function chkPlusInt2(data,msg)//data为需要验证的输入框,msg为提示的对话框内容
{
var reg=/^\d*$/gi;
var isInt=reg.exec(trimAll(data.value));
if(!isInt)
{
alert(msg);
data.select();
return false;
}
}
2.如果一定要在java中实现的话,你可以先对该输入框的内容进行判断,判断他是否可以转化成数据,如下:
/**
* 判断该字符串是否可以转化成数值
* @param str
* @return boolean
*/
public static boolean isParseInt(String str){
boolean flag = true;
try{
for (int i=0;i<str.length();i++){
if (-1=="-.0123456789".indexOf(str.substring(i,i+1))){
//if (!str.matches("\\d+"))
flag = false;
break;
}
}
}catch(Exception e){
return false;
}
return flag;
}
<script languge="JavaScript">
function Trim(str){
if(str.charAt(0) == " "){
str = str.slice(1);
str = Trim(str);
}
return str;
}function isEmpty(pObj,errMsg){
var obj = eval(pObj);
if( obj == null || Trim(obj.value) == ""){
if (errMsg == null || errMsg =="")
alert("输入为空!");
else
alert(errMsg);
obj.focus();
return false;
}
return true;
}
function isNumber(pObj,errMsg){
var obj = eval(pObj);
strRef = "1234567890";
if(!isEmpty(pObj,errMsg))return false;
for (i=0;i<obj.value.length;i++) {
tempChar= obj.value.substring(i,i+1);
if (strRef.indexOf(tempChar,0)==-1) {
if (errMsg == null || errMsg =="")
alert("数据不符合要求,请检查");
else
alert(errMsg);
if(obj.type=="text")
obj.focus();
return false;
}
}
return true;
}
function addIt() {
var addit=false; if(!isNumber(document.addForm.number,"请输入正确的数字!")){
}
else
{
addit=window.confirm("您确定要添加吗?");
}
if (addit){
// document.addForm.submit();
}
return addit;
}</script>在jsp中的form:<form action ="AddIt.jsp" method=post name="addForm" onSubmit="return addIt()">
<input type="text" name="number" size="35">
<input type="submit" name="Submit" value="添加">
</form>
try {
Integer.parseInt("用户输入的数");
}
catch (Exception e) {
response.sendRedirect("error.jsp");
}可是,程序一catch到异常就直接显示错误消息了,根本没有重定向到error.jsp页面.
显示错误页面为:
org.apache.jasper.JasperException: An exception occured trying to convert String "asd" to type "int"其中"asd"是用户输入的数.
try{
if(isParseInt("用户输入的数")){}
}
楼主,我看一下我给你的代码,你先判断一下,比如我写的第二段代码,如果返回值为false,就不要用Integer.parseInt("")来进行转化了,那样肯定会出现异常的。例:
try{
if(isParseInt("用户输入的数")){
Integer.parseInt("用户输入的数");
}else{
response.sendRedirect("error.jsp");
}
}catch(Exception e){
//错误处理
}