Browse Source

fix bug when use formula

master
richie 7 years ago
parent
commit
70c0897890
  1. 19
      plugin.xml
  2. 57
      readme.md
  3. 29
      src/com/fr/plugin/form/widget/core/URLSource.java

19
plugin.xml

@ -2,20 +2,21 @@
<id>com.fr.solution.plugin.form.widget.rh.iframe</id>
<name><![CDATA[网页框控件]]></name>
<active>yes</active>
<version>5.2</version>
<version>6.0</version>
<env-version>8.0</env-version>
<jartime>2016-06-30</jartime>
<vendor email="solution@finereport.com">solution</vendor>
<description><![CDATA[网页框控件,仅支持在表单中使用]]></description>
<change-notes><![CDATA[
<p>[2015-12-03]修复再次打开地址设置界面时没有正确选择到选项的问题</p>
<p>[2016-01-13]增加常用的API接口</p>
<p>[2016-01-15]实现功能改进数据统计接口</p>
<p>[2016-03-28]在填报中也可以使用</p>
<p>[2016-04-19]修复这个插件单独从tomcat启动时无法使用的问题</p>
<p>[2016-06-30]增加插件可以联动的功能</p>
<p>[2016-07-29]修复不设置网页框地址时会导致整个表单无法展示的BUG</p>
<p>[2016-07-29]网页地址不加http的时候自动加上</p>
[2017-03-17]修复公式无法正确解析的问题。<br/>
[2016-07-29]网页地址不加http的时候自动加上。<br/>
[2016-07-29]修复不设置网页框地址时会导致整个表单无法展示的BUG。<br/>
[2016-06-30]增加插件可以联动的功能。<br/>
[2016-04-19]修复这个插件单独从tomcat启动时无法使用的问题。<br/>
[2016-03-28]在填报中也可以使用。<br/>
[2016-01-15]实现功能改进数据统计接口。<br/>
[2016-01-13]增加常用的API接口。<br/>
[2015-12-03]修复再次打开地址设置界面时没有正确选择到选项的问题。<br/>
]]></change-notes>
<extra-core>
<LocaleFinder class="com.fr.plugin.form.widget.locale.LocaleFinder"/>

57
readme.md

@ -1,55 +1,30 @@
# 表单网页框控件
## 插件编译
将帆软报表安装目录下的相关jar包:
$installDir/fr-designer-core-8.0.jar
该插件支持在FineReport V8.0的表单中使用网页框控件
$installDir/fr-designer-chart-8.0.jar
## API接口
$installDir/fr-designer-report-8.0.jar
1. setValue:(String)v
设置并刷新网页框控件的地址(保留原参数)
2. getValue
获取网页框控件的src地址
3. reset
重置网页框控件并刷新
$installDir/WebReport/WEB-INF/lib/fr-core-8.0.jar
$installDir/WebReport/WEB-INF/lib/fr-chart-8.0.jar
$installDir/WebReport/WEB-INF/lib/fr-report-8.0.jar
$installDir/WebReport/WEB-INF/lib/fr-platform-8.0.jar
$installDir/WebReport/WEB-INF/lib/fr-third-8.0.jar
拷贝到项目工程的lib/report目录下(如果没有该目录则自行新建)
然后执行ant命名来编辑插件包:
`ant -f build.xml jar`
## 插件安装
使用帆软设计器自带的插件管理器即可安装。
## 插件使用
选择控件界面,从这个界面中选择网页框并拖动到表单中:
## 效果图
1. 选择控件界面
![1](screenshots/1.png)
设置控件的地址和参数入口:
2. 设置控件的地址和参数入口
![2](screenshots/2.png)
设置控件的模板地址界面:
3. 设置控件的模板地址界面
![3](screenshots/3.png)
设置控件的网络地址界面:
4. 设置控件的网络地址界面
![4](screenshots/4.png)
预览效果:
![5](screenshots/5.png)
## 支持的API
```setValue:(String)v``` 设置并刷新网页框控件的地址(保留原参数)
```getValue()``` 获取网页框控件的src地址
```reset()``` 重置网页框控件并刷新
5. 预览效果
![5](screenshots/5.png)

29
src/com/fr/plugin/form/widget/core/URLSource.java

@ -1,10 +1,15 @@
package com.fr.plugin.form.widget.core;
import com.fr.base.Formula;
import com.fr.base.Parameter;
import com.fr.base.ParameterHelper;
import com.fr.base.TemplateUtils;
import com.fr.general.FRLogger;
import com.fr.general.GeneralUtils;
import com.fr.general.Inter;
import com.fr.script.Calculator;
import com.fr.stable.StableUtils;
import com.fr.stable.UtilEvalError;
import com.fr.stable.script.CalculatorProvider;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
@ -38,15 +43,25 @@ public class URLSource extends RHIframeSource {
@Override
public String getCalculatedUrl(Calculator calculator, HttpServletRequest req) {
try {
String result = TemplateUtils.render(url, calculator);
if (result != null && !result.toLowerCase().startsWith("http")) {
result = "http://" + result;
String result = null;
if (StableUtils.canBeFormula(url)) {
try {
result = GeneralUtils.objectToString(calculator.eval(new Formula(url)));
} catch (UtilEvalError u) {
FRLogger.getLogger().error(u.getMessage(), u);
}
return result;
} catch (Exception e) {
return null;
} else {
try {
result = TemplateUtils.render(url, calculator);
} catch (Exception e) {
FRLogger.getLogger().error(e.getMessage(), e);
}
}
if (result != null && !result.toLowerCase().startsWith("http")) {
result = "http://" + result;
}
return result;
}
@Override

Loading…
Cancel
Save