功能:  实现模板文件的预览

模板实体类中有一个content字段,它的值是xml形式的,就是要预览它的内容;

实现思路:  在java后台中将这个xml内容以xml文件的形式保存到服务器上,然后将路径返回到前台,前台使用window.open()的方式访问这个文件,这个文件就会在浏览器中打开,浏览器打开xml文件就是一种预览的方式.

    /**
     * 预览模板-并生成模板文件
     *
     * @param parameter
     * @return
     * @throws IOException
     */
    @SuppressWarnings("deprecation")
    public Object getFileContent4XML(Map<String, DataSet> dataSetMap,Object parameter){

        Map<String, Object> outParameters= new HashMap<String,Object>();
        outParameters.put("suc", "true");
        try {
            DataSet dataSet=dataSetMap.get("datasetTemplate");
            // 这里只会有一条数据
            if(dataSet.getRecords()!=null && dataSet.getRecords().size()==1){                 // 拿到对象,它里面有content字段
                MantisTemplate templete=(MantisTemplate)(dataSet.getRecords().iterator().next());
                // request对象
                HttpServletRequest request=((HttpDoradoContext) DoradoContext.getContext()).getRequest() ;
                String path=request.getRealPath("tmp/");
               
            // templete对象的xml内容包含一些特殊的字符无法解析,需要作转义 ,按照目前的内容,只能对& 作转义
                String temp=templete.getTemplateContent();
                temp=temp.replaceAll("&", "&amp;");

             //生成文件并将xml内容写入文件
                File file =new File(path+File.separatorChar+templete.getName()+".xml");

             OutputStream out= new FileOutputStream(file);
             out.write(temp.getBytes());
             out.flush();
             out.close();
                               // 返回xml路径  retPath=http://localhost:8080/receipt
             String retPath=request.getRequestURL().toString();
             retPath=retPath.replaceFirst(request.getServletPath().toString(), "");
                outParameters.put("retPath",retPath);
                outParameters.put("retFile","/tmp/"+templete.getName()+".xml" );
            }else{
                outParameters.put("suc", "false");
            }
        }  catch (Exception e) {
            outParameters.put("suc", "false");
            logger.error(e, "【异常】 [模板文件导入失败!] " + " 异常信息:" + e.getMessage());
        }

        return outParameters;
    }
    

前台的处理

            var suc = command.outParameters().getValue("suc");
                    if(suc == 'false'){
                        alert("预览模板失败!");
                        return false;
                    }else{
                        var  retPath= command.outParameters().getValue("retPath");
                        var  retFile= command.outParameters().getValue("retFile");
                        // 在当前页面中打开时使用 location.href=retPath+encodeURIComponent(retFile);
                   // 在新的窗口中打开时使用 open()方法
                        open(retPath+encodeURIComponent(retFile),'_blank','top=210,left=220,height=455,width=1120,directories=no,titlebar=no,location=no,toolbar=no,menubar=no,scrollbars=yes,resizable=no');
                    }

JavaScript打开新窗口的更多详细的说明,请访问:

http://www.cnblogs.com/yangw/p/4752473.html

XML预览的更多相关文章

  1. Android Studio 无法预览xml布局视图的解决办法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lvyoujt/article/details/73283762 提示:failed to load ...

  2. Android Studio 无法预览xml布局视图:failed to load AppCompat ActionBar with unkNown error

    问题如下: 解决方法: 找到res-->values-->styles.xml 文件 可以看到主题Them设置如下: 修改为: 界面预览可以正常显示

  3. Android Studio xml文件中的布局预览视图

    操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...

  4. AndroidStudio下使用 RecyclerView xml文件不显示预览条目并报错类似:NoClassDefFoundError 问题解决

    在项目中使用RecyclerView是很普遍的,最近工作中遇到了这种情况: RecyclerView可以正常使用 不会报错 但是在layout中的xml文件中不显示并且报错,如下图:(报的错忘了截了, ...

  5. Android Studio无法预览xml布局之解决方法(两种)

    学习安卓程序开发,用的Android Studio,发现怎么更改xml代码都没有想要的效果.如图 代码如下: <?xml version="1.0" encoding=&qu ...

  6. JSP实现word文档的上传,在线预览,下载

    前两天帮同学实现在线预览word文档中的内容,而且需要提供可以下载的链接!在网上找了好久,都没有什么可行的方法,只得用最笨的方法来实现了.希望得到各位大神的指教.下面我就具体谈谈自己的实现过程,总结一 ...

  7. C#开发微信门户及应用(30)--消息的群发处理和预览功能

    在很多场合下,我们可能需要利用微信公众号的优势,定期给指定用户群发送一些推广消息或者新闻内容,以便给关注客户一种经常更新公众号内容的感觉,同时也方便我们经常和用户进行互动.微信公众号的高级群发接口就是 ...

  8. 解决Android界面布局添加EditText组件后界面无法预览

    错误报告: Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V Exception details are ...

  9. html之file标签 --- 图片上传前预览 -- FileReader

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

随机推荐

  1. js基础提高(二)

    JavaScript基础提高(二) 上篇写的是JavaScript的历史.基本的数据类型和基本的语法进填的话讲的就深入一些了. js的函数 1.js函数定义的方式 (1)普通方式 语法:functio ...

  2. 常用业务接口界面化 in python flask

    背景: 对于业务测试来说,有一些基础业务接口是需要经常调用的,如根据userId查询某人的信息,修改某人的xx属性,一般的接口都有验签(或者说token)机制,使用postman等工具的话,也是需要去 ...

  3. awk 使用案例

    1.输出占用率超过60%的分区 df -h | awk 'BEGIN{print "Full Partition"}NR>1{gsub("%"," ...

  4. 【Ubuntu Desktop】安装主流桌面

    ubuntu的桌面环境实在多,在这里选了几款主流的桌面环境,大家可以按需安装使用. 1.GNOME 2 Classic 经典老界面 gnome2   after reboot,choose GNOME ...

  5. WeQuant交易策略—简单均线

    简单双均线策略(Simple Moving Average) 策略介绍简单双均线策略,通过一短一长(一快一慢)两个回看时间窗口收盘价的简单移动平均绘制两条均线,利用均线的交叉来跟踪价格的趋势.这里说的 ...

  6. 从 HTTP 到 HTTPS 再到 HSTS

    近些年,随着域名劫持.信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变. HTTP HTTP(超文本传输协议) 是一 ...

  7. 线性代数-矩阵-【5】矩阵化简 C和C++实现

    点击这里可以跳转至 [1]矩阵汇总:http://www.cnblogs.com/HongYi-Liang/p/7287369.html [2]矩阵生成:http://www.cnblogs.com/ ...

  8. selenium 对https网站(加密证书)进行自动化测试

    由于公司需要,被测网站有证书加密,由于在selenium启动firefox的时候,它会重新建一个profile作为启动的profile,所以无论你怎么把站点设为可信任站点,在selenium启动的fi ...

  9. JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链

      前  言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...

  10. js操作cookie 使用详解

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp62  JavaScript中的另一个机制:cookie,则可以达到真正全 ...