您的位置:首页 > 其它

一个return引发的血案

2013-05-13 13:07 155 查看
<%@ page import="Easis.Common.JsonHelper" %>
<%@ page import="Easis.Common.StringUtil" %>
<%@ page import="Easis.Common.Validation" %>
<%@ page import="Easis.HTTP.RequestEnhance" %>
<%@ page import="EWeb.eFrom.shop" %>
<%@ page import="java.util.Hashtable" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
RequestEnhance _re=new RequestEnhance(request);
shop form_model=new shop();

Hashtable<String,Object> hsres=Validate(_re,form_model);
boolean valid_res=StringUtil.Str2Boolean(hsres.get("status").toString());
if(valid_res==false){
out.print(JsonHelper.getJsonString(hsres));return;
}
//-form_model可以用了

/*自定义逻辑*/

out.print(JsonHelper.getJsonString(hsres));
/*切勿加return,加了的话会造成下面的方法无法正常编译,最后会报错找不到方法。*/
/*自定义逻辑*/

%>
<%!
/*验证代码开始了*/
public Hashtable<String,Object> Validate(RequestEnhance _re,shop form_model){

form_model=new shop();
/*定义相关参数*/
String origin_id=_re.fetchParamByPost("eform.id");
if(origin_id==null){
return ErrorInfo("表单中并不包含【主键】的数据,请确认是否同一表单?");
}
String origin_title=_re.fetchParamByPost("eform.title");
if(origin_title==null){
return ErrorInfo("表单中并不包含【店铺名称】的数据,请确认是否同一表单?");
}
String origin_imgurl=_re.fetchParamByPost("eform.imgurl");
if(origin_imgurl==null){
return ErrorInfo("表单中并不包含【店铺封面】的数据,请确认是否同一表单?");
}
String origin_mapLocation=_re.fetchParamByPost("eform.mapLocation");
if(origin_mapLocation==null){
return ErrorInfo("表单中并不包含【地址示意图】的数据,请确认是否同一表单?");
}
String origin_description=_re.fetchParamByPost("eform.description");
if(origin_description==null){
return ErrorInfo("表单中并不包含【店铺描述】的数据,请确认是否同一表单?");
}
String origin_tel=_re.fetchParamByPost("eform.tel");
if(origin_tel==null){
return ErrorInfo("表单中并不包含【电话号码】的数据,请确认是否同一表单?");
}
String origin_email=_re.fetchParamByPost("eform.email");
if(origin_email==null){
return ErrorInfo("表单中并不包含【联系邮箱】的数据,请确认是否同一表单?");
}
String origin_contactor=_re.fetchParamByPost("eform.contactor");
if(origin_contactor==null){
return ErrorInfo("表单中并不包含【联系人】的数据,请确认是否同一表单?");
}
String origin_istop=_re.fetchParamByPost("eform.istop");
if(origin_istop==null){
return ErrorInfo("表单中并不包含【置顶】的数据,请确认是否同一表单?");
}
String origin_content=_re.fetchParamByPost("eform.content");
if(origin_content==null){
return ErrorInfo("表单中并不包含【详细描述】的数据,请确认是否同一表单?");
}
/*字符串验证*/

if(Validation.isInteger(origin_id)==false){
return ErrorInfo("【id】格式错误,必须为整数!");
}

if(Validation.isRequired(origin_title)==false){
return ErrorInfo("必须填写店铺名称");
}

if(Validation.isRequired(origin_imgurl)==false){
return ErrorInfo("必须选择店铺封面!");
}
if(Validation.isURL(origin_imgurl)==false){
return ErrorInfo("图片地址格式错误!");
}

if(Validation.isURL(origin_mapLocation)==false){
return ErrorInfo("地址示意图网址格式错误。");
}
if(Validation.isRequired(origin_mapLocation)==false){
return ErrorInfo("必须补充店铺的位置示意图!");
}

if(Validation.isRequired(origin_description)==false){
return ErrorInfo("必须填写店铺描述!");
}

if(Validation.isPhoneNumber(origin_tel)==false){
return ErrorInfo("号码格式错误!【例如:xxxx】");
}
if(Validation.isRequired(origin_tel)==false){
return ErrorInfo("必须填写号码!");
}

if(Validation.isEmailAddr(origin_email)==false){
return ErrorInfo("联系邮箱必须为邮箱格式(例如:xxx@qq.com)");
}
if(Validation.isRequired(origin_email)==false){
return ErrorInfo("必须填写联系邮箱!");
}

if(Validation.isBoolean(origin_istop)==false){
return ErrorInfo("置顶必须为布尔值。");
}

/*赋值*/
try{form_model.id= Integer.parseInt(origin_id);}
catch(Exception ef){ return ErrorInfo(ef.toString());}
form_model.title=origin_title;
form_model.imgurl=origin_imgurl;
form_model.mapLocation=origin_mapLocation;
form_model.description=origin_description;
form_model.tel=origin_tel;
form_model.email=origin_email;
form_model.contactor=origin_contactor;
form_model.istop=StringUtil.Str2Boolean(origin_istop);
form_model.content=origin_content;

return SuccessInfo("所有参数都符合要求");
}
/*验证代码结束了*/
%>
<%!
public Hashtable<String,Object> ErrorInfo(String message){
Hashtable<String,Object> hsres=new Hashtable<String,Object>();
hsres.put("status",false);
hsres.put("message",""+message);
return hsres;
}
public Hashtable<String,Object> SuccessInfo(String message){
Hashtable<String,Object> hsres=new Hashtable<String,Object>();
hsres.put("status",true);
hsres.put("message",""+message);
return hsres;
}
%>


看看这一段代码--其实是自动生成的,

看到下面这一段话没有?:

/*切勿加return,加了的话会造成下面的方法无法正常编译,最后会报错找不到方法。*/


没错,这次的主角就是return。

我用的是tomcat,当采用return以后,jsp的编译就会结束,结果访问该jsp页面会报错,找不到方法之类的,为了这个问题我搞了一个晚上,bug还真是程序猿的天敌。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: