Browse Source

网页框编码问题

master
richie 6 years ago
parent
commit
4efc5a1be2
  1. BIN
      install/fr-plugin-rh.iframe-7.1.zip
  2. BIN
      install/fr-plugin-rh.iframe-7.2.zip
  3. 52
      plugin-iframe.iml
  4. 3
      plugin.xml
  5. 38
      src/main/java/com/fr/plugin/form/widget/core/TemplateSource.java

BIN
install/fr-plugin-rh.iframe-7.1.zip

Binary file not shown.

BIN
install/fr-plugin-rh.iframe-7.2.zip

Binary file not shown.

52
plugin-iframe.iml

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
<output url="file://$MODULE_DIR$/../webroot/WEB-INF/plugins/plugin-com.fr.solution.plugin.form.widget.rh.iframe.v10-1.0/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.fr.third:fine-third:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.activator:fine-activator:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.core:fine-core:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-all:4.1.17" level="project" />
<orderEntry type="library" name="Maven: com.fr.webui:fine-webui:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.datasource:fine-datasource:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.decision:fine-decision:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.decision:fine-decision-report:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.schedule:fine-schedule:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.schedule:fine-schedule-report:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.intelligence:fine-swift:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fineio:fineio:2.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.third.server:servlet-api:3.0" level="project" />
<orderEntry type="library" name="Maven: com.fr.intelligence:fine-accumulator:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.report:fine-report-engine:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fr.report:fine-report-designer:10.0-RELEASE-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: io.socket:socket.io-client:0.7.0" level="project" />
<orderEntry type="library" name="Maven: io.socket:engine.io-client:0.7.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp-ws:3.0.1" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.0.1" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.6.0" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.6.9" level="project" />
<orderEntry type="library" name="Maven: org.swingexplorer:swexpl:2.0" level="project" />
<orderEntry type="library" name="Maven: org.swingexplorer:swag:1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-catalina:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-servlet-api:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jsp-api:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-el-api:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-annotations-api:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-api:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jni:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-coyote:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-util:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-util-scan:8.5.32" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jaspic-api:8.5.32" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.44" level="project" />
</component>
</module>

3
plugin.xml

@ -2,12 +2,13 @@
<id>com.fr.solution.plugin.form.widget.rh.iframe.v10</id>
<name><![CDATA[网页框控件]]></name>
<active>yes</active>
<version>7.1</version>
<version>7.2</version>
<env-version>10.0</env-version>
<jartime>2018-08-30</jartime>
<vendor>richie</vendor>
<description><![CDATA[网页框控件,仅支持在表单中使用]]></description>
<change-notes><![CDATA[
[2018-10-07]url编码问题。<br/>
[2018-10-07]适配10.0和国际化问题。<br/>
[2018-06-15]修复决策报表无法正确传递参数给网页框中的报表的问题。<br/>
[2018-06-15]增加网页框设计器模板的显示信息。<br/>

38
src/main/java/com/fr/plugin/form/widget/core/TemplateSource.java

@ -6,25 +6,23 @@ import com.fr.base.ParameterHelper;
import com.fr.base.TemplateUtils;
import com.fr.data.NetworkHelper;
import com.fr.general.FArray;
import com.fr.general.GeneralUtils;
import com.fr.general.Inter;
import com.fr.json.JSONArray;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.json.JSONUtils;
import com.fr.script.Calculator;
import com.fr.stable.CodeUtils;
import com.fr.stable.ParameterProvider;
import com.fr.stable.ProductConstants;
import com.fr.stable.ProductConstantsBase;
import com.fr.stable.StableUtils;
import com.fr.stable.UtilEvalError;
import com.fr.stable.js.WidgetName;
import com.fr.stable.script.CalculatorProvider;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
import com.fr.third.org.apache.http.NameValuePair;
import com.fr.third.org.apache.http.client.utils.URLEncodedUtils;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -57,17 +55,27 @@ public class TemplateSource extends RHIframeSource {
public String getCalculatedUrl(Calculator calculator, HttpServletRequest req) {
try {
String realPath = TemplateUtils.render(path, calculator);
List<NameValuePair> pairs = URLEncodedUtils.parse("__emb__=" + realPath, Charset.forName("utf-8"));
List<NameValuePair> extraPairs = new ArrayList<NameValuePair>();
for (NameValuePair pair : pairs) {
if (pair.getName().equals("__emb__")) {
realPath = pair.getValue();
} else {
extraPairs.add(pair);
}
}
if (realPath.contains(".cpt")) {
if (isNewerThan9()) {
return NetworkHelper.createServletURL(req) + "/view/report?viewlet=" + CodeUtils.encodeURIComponent(realPath);
return NetworkHelper.createServletURL(req) + "/view/report?viewlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs);
} else {
return NetworkHelper.createServletURL(req) + "?reportlet=" + CodeUtils.encodeURIComponent(realPath);
return NetworkHelper.createServletURL(req) + "?reportlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs);
}
} else if (realPath.contains(".frm")) {
if (isNewerThan9()) {
return NetworkHelper.createServletURL(req) + "/view/form?viewlet=" + CodeUtils.encodeURIComponent(realPath);
return NetworkHelper.createServletURL(req) + "/view/form?viewlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs);
}
return NetworkHelper.createServletURL(req) + "?formlet=" + CodeUtils.encodeURIComponent(realPath);
return NetworkHelper.createServletURL(req) + "?formlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs);
}
} catch (Exception e) {
return null;
@ -79,6 +87,18 @@ public class TemplateSource extends RHIframeSource {
return Integer.parseInt(ProductConstants.MAIN_VERSION) > 9;
}
private String createQueryString(List<NameValuePair> pairs) {
StringBuilder sb = new StringBuilder();
for (int i = 0, len = pairs.size(); i < len; i ++) {
NameValuePair pair = pairs.get(i);
sb.append("&");
sb.append(CodeUtils.encodeURIComponent(pair.getName()));
sb.append("=");
sb.append(CodeUtils.encodeURIComponent(pair.getValue()));
}
return sb.toString();
}
@Override
public String[] dependence(CalculatorProvider ca) {
Parameter[] parameters = ParameterHelper.analyze4Parameters(path, false);

Loading…
Cancel
Save