Страница 1 из 2
Разные вопросы по Java
Добавлено: 17 фев 2015, 01:32
alexeyfressko
Здравствуйте. Недавно скачал версию для Java (FXJAVA_2015.02.13_Trial)
Возникли некоторые вопросы:
1. Пример с MyRenderReportAction для определения своих функций работает с Flex, но не работает с html5 web designer (не подгружается, оно и понятно т.к. в ApplicationInitializer StiFlexConfig - для Flex версии). Что нужно сделать, чтобы в html5 версии тоже подгружались свои функции?
2. Функция ToCurrencyWordsEs существует или нет? Выдает ошибку class java.lang.RuntimeException Parser error: The name '%s' does not exist in the current context, ToCurrencyWordsEs, , ,
3. Видел пример с MyLoadDataAction для Flex. Что если есть несколько баз данных, несколько пользователей (mysql) и паролей к ним. В зависимости от текущей сессии (Request HttpSession) необходимо конфигурировать подключение к одной базе или к другой. Если пользователь нажимает на кнопку Редактировать подключение - он не должен видеть данные подключения (имя, пароль, сервер). Возможно ли сделать так с помощью MyLoadDataAction? Можно ли сделать что-то похожее для webdesigner (html5)?
Спасибо.
Re: Разные вопросы по Java
Добавлено: 17 фев 2015, 10:01
Vadim
Здравствуйте.
Для использования CustomFunctions вы можете на основе примера \Samples\webdesigner\index.jsp добавить функции в нужный обработчик событий, например:
Код: Выделить всё
public StiReport getEditedReport(HttpServletRequest request){
try{
StiReport report = StiWebDesigner.getNewReport(null);
report.getCustomFunctions().add(new StiCustomFunction() {
public Object invoke(List<Object> args) {
return ((String) args.get(0)).substring(((Long) args.get(1)).intValue(),
((Long) args.get(2)).intValue());
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public List<Class> getParametersList() {
return new ArrayList<Class>(Arrays.asList(String.class, Long.class,
Long.class));
}
public String getFunctionName() {
return "subStr";
}
});
return report;
} catch (Exception e){
e.printStackTrace();
}
return null;
}
Будет доступно с версии 2014.3.10
2. Функция ToCurrencyWordsE будет доступно с версии 2014.3.10
3. Для Flex, на примере Samples\webfx\src\my\servlet\ApplicationInitializer.java вы можете указать свойство
Код: Выделить всё
stiConfig.getProperties().setProperty("Designer.Dictionary.AllowModifyConnections", "False");
stiConfig.getProperties().setProperty("Designer.Dictionary.AllowModifyDataSources", "False");
Для WebDesigner (html) используйте опции:
Код: Выделить всё
StiWebDesignerOptions options = new StiWebDesignerOptions();
options.setPermissionDataSources(StiDesignerPermissions.View);
options.setPermissionDataConnections(StiDesignerPermissions.View);
alexeyfressko писал(а):Здравствуйте. Недавно скачал версию для Java (FXJAVA_2015.02.13_Trial)
Возникли некоторые вопросы:
1. Пример с MyRenderReportAction для определения своих функций работает с Flex, но не работает с html5 web designer (не подгружается, оно и понятно т.к. в ApplicationInitializer StiFlexConfig - для Flex версии). Что нужно сделать, чтобы в html5 версии тоже подгружались свои функции?
2. Функция ToCurrencyWordsEs существует или нет? Выдает ошибку class java.lang.RuntimeException Parser error: The name '%s' does not exist in the current context, ToCurrencyWordsEs, , ,
3. Видел пример с MyLoadDataAction для Flex. Что если есть несколько баз данных, несколько пользователей (mysql) и паролей к ним. В зависимости от текущей сессии (Request HttpSession) необходимо конфигурировать подключение к одной базе или к другой. Если пользователь нажимает на кнопку Редактировать подключение - он не должен видеть данные подключения (имя, пароль, сервер). Возможно ли сделать так с помощью MyLoadDataAction? Можно ли сделать что-то похожее для webdesigner (html5)?
Спасибо.
Re: Разные вопросы по Java
Добавлено: 18 фев 2015, 01:58
alexeyfressko
Хорошо.
По поводу классов StiLoadAction, MySaveAction, MyLoadDataAction.
Есть ли возможность узнать сессию пользователя в процессе загрузки или сохранения отчета? Необходимо сохранять отчеты (и загружать их) в разные базы данных, узнать параметры соединения которых (имя, пароль, хост, база) можно только из сессии пользователя.
Re: Разные вопросы по Java
Добавлено: 18 фев 2015, 05:26
alexeyfressko
Еще вопросы.
При использовании webdesigner при каждом открытии страницы с отчетом designer загружает кучу ресурсов типа
/webdesigner/Scripts/Initialize/PropertiesPanel/InitializeShapePropertiesGroup.js
/webdesigner/Scripts/Initialize/Controls/InitializeColorControl.js
...
штук 150 наверно, причем они подгружаются через /stimulsoft_web_resource? и поэтому не кэшируются.
Какие у вас планы по оптимизации есть? Нельзя ли сделать так чтобы грузился только один большой javascript? Причем статический файл? Мелкие картинки на кнопки в одну большую не планируете объединять?
Когда будет следующая версия 3.10?
Нельзя ли узнать какие планы по развитию именно Java решения? С какой скоростью будут выходить обновления?
Re: Разные вопросы по Java
Добавлено: 18 фев 2015, 14:02
Vadim
Здравствуйте.
* В классы *Action мы добавили методы с параметром HttpServletRequest request
* Мы оптимизировали загрузку WebDesigner и WebViewer. Загрузка WebViewer около секунды, WebDesigner около 3 секунд (удаленно из интернета)
Эти изменения будут доступны с версии 2014.3.10 в эту пятницу.
Пререлизы, если есть изменения, выходят еженедельно.
Новый функционал, появляющийся в Net версии переносится в Java в течении релиза.
alexeyfressko писал(а):
По поводу классов StiLoadAction, MySaveAction, MyLoadDataAction.
Есть ли возможность узнать сессию пользователя в процессе загрузки или сохранения отчета? Необходимо сохранять отчеты (и загружать их) в разные базы данных, узнать параметры соединения которых (имя, пароль, хост, база) можно только из сессии пользователя.
Еще вопросы.
При использовании webdesigner при каждом открытии страницы с отчетом designer загружает кучу ресурсов типа
/webdesigner/Scripts/Initialize/PropertiesPanel/InitializeShapePropertiesGroup.js
/webdesigner/Scripts/Initialize/Controls/InitializeColorControl.js
...
штук 150 наверно, причем они подгружаются через /stimulsoft_web_resource? и поэтому не кэшируются.
Какие у вас планы по оптимизации есть? Нельзя ли сделать так чтобы грузился только один большой javascript? Причем статический файл? Мелкие картинки на кнопки в одну большую не планируете объединять?
Когда будет следующая версия 3.10?
Нельзя ли узнать какие планы по развитию именно Java решения? С какой скоростью будут выходить обновления?
Re: Разные вопросы по Java
Добавлено: 20 фев 2015, 16:56
alexeyfressko
Обновил до последней версии. Пробую html5 дизайнер.
Теперь ресурсы запрашиваются так:
http://localhost:8086/stimulsoft_web_re ... ts/Main.js
Разумеется 404 - не найден. Какие нибудь изменения в web.xml нужно делать? В архиве "Stimulsoft Reports.Fx for Java 2014.3.13 from 2015.02.20" никаких статический файлов не было.
Re: Разные вопросы по Java
Добавлено: 20 фев 2015, 17:27
alexeyfressko
Еще вопрос.
- в дизайнере (html5) загружается отчет с одним getReportGuid().
- отчет редактируется
- в событии onSaveReportTemplate у отчета уже другое getReportGuid().
Это нормально?
Re: Разные вопросы по Java
Добавлено: 20 фев 2015, 20:53
alexeyfressko
Еще вопросы:
При печати из ViewerFX и DesignerFX ориентация страницы становится альбомной. Тогда как в настройках принтера (в самом принтере, и в браузере) стоит книжная. При печати из Html5 Viewer - все нормально. Во вложении можно посмотреть как выглядит пробный отчет.
При экспорте в PDF на файле PDF стоит запрет на печать. Это потому что версия триальная или баг?
Re: Разные вопросы по Java
Добавлено: 20 фев 2015, 21:29
alexeyfressko
При попытке загрузить файл локализации для FX выдается ошибка:
File: D:\Projects\JavaEE\MobilVendorReports\WebContent\localization\ru.xml
Код: Выделить всё
java.lang.NullPointerException
at com.stimulsoft.lib.io.StiIOUtil.copy(StiIOUtil.java:124)
at com.stimulsoft.lib.io.StiIOUtil.writeInputStream(StiIOUtil.java:44)
at com.stimulsoft.flex.events.StiLoadingLanguageResource.process(StiLoadingLanguageResource.java:28)
at com.stimulsoft.flex.events.StiAbstractAction.run(StiAbstractAction.java:19)
at com.stimulsoft.web.servlet.StiServlet.runAction(StiServlet.java:23)
at com.stimulsoft.web.servlet.StiDesignerFxServlet.processingParam(StiDesignerFxServlet.java:69)
at com.stimulsoft.web.servlet.StiDesignerFxServlet.processing(StiDesignerFxServlet.java:49)
at com.stimulsoft.web.servlet.StiDesignerFxServlet.doPost(StiDesignerFxServlet.java:37)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
фев 20, 2015 1:26:38 PM com.stimulsoft.web.servlet.StiServlet error
SEVERE: Error
java.lang.NullPointerException
at com.stimulsoft.lib.io.StiIOUtil.copy(StiIOUtil.java:124)
at com.stimulsoft.lib.io.StiIOUtil.writeInputStream(StiIOUtil.java:44)
at com.stimulsoft.flex.events.StiLoadingLanguageResource.process(StiLoadingLanguageResource.java:28)
at com.stimulsoft.flex.events.StiAbstractAction.run(StiAbstractAction.java:19)
at com.stimulsoft.web.servlet.StiServlet.runAction(StiServlet.java:23)
at com.stimulsoft.web.servlet.StiDesignerFxServlet.processingParam(StiDesignerFxServlet.java:69)
at com.stimulsoft.web.servlet.StiDesignerFxServlet.processing(StiDesignerFxServlet.java:49)
at com.stimulsoft.web.servlet.StiDesignerFxServlet.doPost(StiDesignerFxServlet.java:37)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Файл точно существует. Вот код MyLocalizationAction:
Код: Выделить всё
package com.mobilvendor.reports;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.stimulsoft.base.exception.StiException;
import com.stimulsoft.base.localization.StiLocalizationInfo;
import com.stimulsoft.base.utils.StiXmlMarshalUtil;
import com.stimulsoft.flex.StiLocalizationAction;
import com.stimulsoft.lib.io.StiFileUtil;
public class MyLocalizationAction extends StiLocalizationAction {
@Override
public List<StiLocalizationInfo> getLocalizations() throws StiException, FileNotFoundException {
List<StiLocalizationInfo> list = new ArrayList<StiLocalizationInfo>();
File localizationDir = getLocalizationDir();
if (localizationDir.exists()) {
Iterator<File> iterateLocalization = StiFileUtil.iterateFiles(localizationDir, new String[] { "xml" }, false);
for (; iterateLocalization.hasNext();) {
File fileLoc = iterateLocalization.next();
InputStream is = new BufferedInputStream(new FileInputStream(fileLoc));
StiLocalizationInfo localization = StiXmlMarshalUtil.unmarshal(is, StiLocalizationInfo.class);
localization.setKey(fileLoc.getName());
list.add(localization);
}
}
return list;
}
@Override
protected File getLocalizationDir() {
return new File("D:\\Projects\\JavaEE\\MobilVendorReports\\WebContent\\localization");
}
@Override
public InputStream getLocalization(String key) throws StiException, FileNotFoundException {
File file = new File(getLocalizationDir(), key);
System.out.println("File: " + file.getAbsolutePath());
return new BufferedInputStream(new FileInputStream(file));
//return new FileInputStream(file);
}
}
Re: Разные вопросы по Java
Добавлено: 23 фев 2015, 10:37
Vadim
Здравствуйте.
alexeyfressko писал(а):Обновил до последней версии. Пробую html5 дизайнер.
Теперь ресурсы запрашиваются так:
http://localhost:8086/stimulsoft_web_re ... ts/Main.js
Разумеется 404 - не найден. Какие нибудь изменения в web.xml нужно делать? В архиве "Stimulsoft Reports.Fx for Java 2014.3.13 from 2015.02.20" никаких статический файлов не было.
Используйте mapping: <url-pattern>/stimulsoft_web_resource/*</url-pattern>
При печати из ViewerFX и DesignerFX ориентация страницы становится альбомной. Тогда как в настройках принтера (в самом принтере, и в браузере) стоит книжная. При печати из Html5 Viewer - все нормально. Во вложении можно посмотреть как выглядит пробный отчет.
Попробуйте изменить на False значения свойств\: Print.AutoPageOrientation Print.AutoPageScale
Как показано в примере \Samples\webfx\src\my\servlet\ApplicationInitializer.java stiConfig.getProperties().setProperty("Engine.Type", "Flex");
При экспорте в PDF на файле PDF стоит запрет на печать. Это потому что версия триальная или баг?
Проверьте значения "Allow Print Document" в свойствах "Document Security" окна параметра экспорта.
Еще вопрос.
- в дизайнере (html5) загружается отчет с одним getReportGuid().
- отчет редактируется
- в событии onSaveReportTemplate у отчета уже другое getReportGuid().
Это нормально?
Да. Отчет изменился => другой Guid.
При попытке загрузить файл локализации для FX выдается ошибка:
File: D:\Projects\JavaEE\MobilVendorReports\WebContent\localization\ru.xml
java.lang.NullPointerException
at com.stimulsoft.lib.io.StiIOUtil.copy(StiIOUtil.java:124)
В этом месте InputStream = null