CustomBrowserUrl.jsp 2.06 KB
<%@page import="java.net.URLEncoder"%>
<%@page import="weaver.hrm.User"%>
<%@page import="weaver.hrm.HrmUserVarify"%>
<%@page import="weaver.general.Util"%>
<%@ page import="sun.misc.BASE64Decoder" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.formmode.browser.FormModeBrowserUtil" %>
<%@ page import="weaver.formmode.virtualform.VirtualFormHandler" %>
<%
	User user = HrmUserVarify.getUser(request, response);
    String showname = Util.null2String(request.getParameter("showname"));
    String billid = Util.null2String(request.getParameter("billid"));
    String linkUrl = Util.null2String(request.getParameter("customurl"));

    RecordSet rs = new RecordSet();
    BASE64Decoder decoder = new BASE64Decoder();
    try {
        linkUrl = new String(decoder.decodeBuffer(linkUrl),"UTF-8").trim();
    } catch (Exception e) {
        rs.writeLog(e);
    }
    FormModeBrowserUtil browserUtil = new FormModeBrowserUtil();
    String formid = browserUtil.getFormIdByShowName(showname);
    boolean isVirtualForm = VirtualFormHandler.isVirtualForm(formid);
    
    linkUrl = browserUtil.getLinkUrl(user,linkUrl);
    String nowbillid = URLEncoder.encode(billid, "UTF-8");//billid可能为中文
    linkUrl = linkUrl.replace("$billid$",nowbillid);
    if(linkUrl.indexOf("?billid=&")>-1){
        linkUrl = linkUrl.replace("?billid=&","?billid="+nowbillid+"&");
    }
    if(linkUrl.indexOf("&billid=&")>-1){
        linkUrl = linkUrl.replace("&billid=&","&billid="+nowbillid+"&");
    }
    if(linkUrl.endsWith("&billid=")){
        linkUrl = linkUrl.substring(0,linkUrl.lastIndexOf("&billid="))+"&billid="+nowbillid;
    }

    //linkUrl = linkUrl.toLowerCase();//表单字段不区分大小写,但是formId和modeId和其他参数可能是大写
    
    if(!isVirtualForm){//虚拟表单为浏览不支持linkURL点击
        linkUrl = browserUtil.getLinkUrl(showname,billid,linkUrl);
    } else {
        linkUrl = browserUtil.getLinkUrlVirtual(showname,billid,linkUrl);
    }
    
    response.setContentType("text/html;charset=gbk");
    response.sendRedirect(linkUrl);
%>