• 润乾报表JSF FORM 标签中使用填报表解决方案


    

    需求

    润乾报表的标签需要在jsf页面中和其他填报控件一起使用,润乾报表负责展现录入部分数据,并且这部分数据和页面的其它控件的数据存在前台和后台的交互。

    问题

    润乾报表在前台会生成自己的form,嵌入到的jsfform标签中后,出现两个form嵌套的情况,造成报表无法填报和提交。

    Jsf1.1版本本身不支持两个form的提交,所以form并列的方式也不可取。

    可行解决方案:

    1:填报表解析后本身不作为一个form,当我们点击提交的时候动态生成一个iframe,这个iframe中生写一个form,再把报表数据写到这个form中去做提交保存操作。

    2:可选择是否生成form

     1)当润乾填报表使用在jsfform标签中时,选择不生成form,然后可以通过js方法遍历获取到填报的数据,将数据和其他填报套件的数据一同提交到后台处理。

     2)当润乾填报表单独使用时,不嵌套在jsfform标签中,选择生成form,润乾填报表可以填报保存数据。

    实现的解决方案:

    对于其它填报控件中数据需要和润乾填报的数据进行交互的情况,前台获取润乾填报表数据,跟用户自己开发的填报控件数据一同提交不失为一种很好的方法,因为这样数据可以直接进入客户的业务处理类进行交互处理。

     

    目前润乾报表已经支持第二种处理方法,即选择不生成form标签。使用方法:

        <f:view>

        <h:form>

        <f:subview id=“a”>

          <f:verbatim>

        <report:html name=“report1″ reportFileName=“mydataset.raq”

               funcBarLocation=“top”

               needPageMark=“yes”

               needPrint=“yes”

               needSaveAsWord=“yes”

               submit=保存

               generateParamForm=”no”

               width=“-1″

               reportEnterUrl=“add.jsf”

               generateSubmitForm=“no”

               exceptionPage=“/reportJsp/myError2.jsp”/>

           </f:verbatim>

        </f:subview>

        <input name=“get1″ value=查看值1″ type=“button” type=“form1″ onClick=“getInputData()”>

        <input name=“get2″ value=查看值2″ type=“button” type=“form1″ onClick=“getCycle()”>

        </h:form>

        </f:view>

      

    遍历报表填报表中输入的数据,包括真实值,显示值,单元格与数据库字段的对应关系(单元格定义的html事件)的js:

    <script type=”text/javascript”>

    function getCycle(){  //cellName为扩展格的名称,n为扩展出几个,reportName为tag的name属性
    _submitEditor(document.getElementById(‘report1′));
    var rpt = document.getElementById(“report1″);
    //获得报表的行数
    var rowCount = rpt.rows.length;
    //alert(rowCount);
    //获得报表的列数
    var colCount = rpt.rows[0].cells.length;
    //alert(colCount);

    for(var j=1;j<=colCount;j++){
    var cname=”";
    if(j==1) cname=”report1_A”;
    if(j==2) cname=”report1_B”;
    if(j==3) cname=”report1_C”;
    if(j==4) cname=”report1_D”;
    if(j==5) cname=”report1_E”;
    if(j==6) cname=”report1_F”;
    if(j==7) cname=”report1_G”;
    for(var i=1;i<=rowCount;i++){
    var cname1=cname+i.toString();
    if(document.getElementById (cname1).modifiable){
    var tempValue = document.getElementById (cname1).value; //获得单元格的真实值
          alert(“单元格”+i+”的真实值是”+tempValue);
    var xsValue = document.getElementById (cname1).innerText; //获得单元格的显示值
          alert(“单元格”+i+”的显示值是”+xsValue);
    var dbfiled = document.getElementById (cname1).dbfiled; //获得单元格的定义的html事件名称
          alert(“单元格”+i+”的数据字段是”+dbfiled);
    }
    }
    }
    }

    //–>
    </script>


    总结:

    数据交互即可后台处理,也可前台处理,以上方案适用于jsf使用自定义填报套件和润乾填报表一同进行数据保存处理或者jspform中使用润乾填报表的业务场景

  • 相关阅读:
    <转>性能测试浅谈
    Linux内存机制以及手动释放swap和内存
    Jmeter(十二)_打印时间戳
    Jmeter(二十一)_脚本参数化与内存溢出的解决方案
    Jmeter(五)_函数
    爬虫利器_you-get
    Jmeter(九)_获取JDBC响应做接口关联
    JMeter(十三)-代理服务器录制脚本
    JMeter(十)-正则表达式关联
    JMeter(十四)-自动生成测试报告
  • 原文地址:https://www.cnblogs.com/shiGuangShiYi/p/10117501.html
Copyright © 2020-2023  润新知