一个return引发的血案

本文介绍了一种在Tomcat环境下使用JSP时遇到的常见问题——即在JSP文件中使用return语句导致的编译错误,并提供了详细的解决方案。
<%@ 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还真是程序猿的天敌。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值