Пользователь
Логин:
Пароль:
Забыли свой пароль?

Поиск по сайту
 

 Расширенный поиск
Реклама

 

Опрос


Погода

ServicePages

Форумы
Обновления
Поиск
Пользователи 
Правила
Помощь
Войти

Страницы: 1 2 3 След.
ServicePages, Открыть запрос по ID
Добрый день, надеюсь подскажите, ситуация следующая:
Решил использовать код, который реализован в веб клиенте, да вот беда, там используется следующая логика:
1) Заходим на сайт, под своим логином/паролем из СД
2) Выгружаем либо полный список запросов либо урезанный (что собой это представляет - я так и не понял)
3) Формируем табличку со списком запросов, если нажимаем на один из номеров запроса, то проваливаемся и !!!ВНИМАНИЕ добавляем его ОИД (лонговское значение)
4) Используя этот ОИД - мы грузим данные
Теперь суть проблемы:
Если свой собственный сервлет, который позволяет клиентам посмотреть состояние по запросу, тут намешано всего, и собственных разработок и намешано с веб-апи.
Проблема в том, что в конечном итоге мы приходим на страницу по ид запроса, и вот косяк как ИД преобразовать ИД в ОИД? самое главное что если в коде jsp страницы в этой строчке sc = sc_hm.openServicecall(sc_oid); поставить ручками номер просто запроса - то вытянет всю инфу, попытаешься автоматом из адреса забрать параметр содержащий ИД запроса, преобразуешь его в ЛОНг, подставишь - нифига, говорит мол ничего такого нет. Куда копать?
вот код который сам должен при загрузке страницы грузить инфу:
Код
                     <% <br />                     String loginname = SdClientBean.hackyFixEncoding("web"); <br />                     String password = SdClientBean.hackyFixEncoding("webuser1"); <br />                     String appserver = "tescom4"; <br /> <br />                     Long sc_oid = null; <br />                     Integer sc_id = null; <br />                     String _sc = request.getParameter("id"); <br />                      <br />                     SdClientBean bean = new SdClientBean(appserver, loginname, password); <br />                     IServicecallHome sc_hm = bean.sd_session().getServicecallHome(); <br />                     IServicecall sc; <br />                      <br />                     sc_id = new Integer(_sc); <br />                     sc_oid = new Long ("11626"); <br />                      <br />                     try { <br />                           sc = sc_hm.openServicecall(sc_oid); <br />                           IHistoryLineServicecallHome hl_hm = bean.sd_session().getHistoryLineServicecallHome(); <br />                           IHistoryLineServicecall hls[] = sc.getHistoryLines(); <br />                           IRegistrationHome reg_hm = bean.sd_session().getRegistrationHome(); <br />                           SortCode.sortIObject(hls); <br />                           for (int i=0 ; i<hls.length ; i++) <br />                           { <br />                              IHistoryLineServicecall hl = hls[i]; <br />                              IRegistration reg = hl.getRegistration(); <br />                              IAccount _created_by = reg.getCreatedby(); <br />                              String created_by = _created_by != null ? _created_by.getLoginName() : ""; <br />                              Double created = reg.getCreated(); <br />                              String subject = hl.getSubject(), information = hl.getInformation(); <br />                              %> <br />                              <div class="viewsc_history_row"> <br />                                 <div class="viewsc_history_col1" st yle="text-align: left;">##</div> <br />                                 <div class="viewsc_history_col2" st yle="text-align: left;"><%= SdClientBean.filter_html_string(subject) %></div> <br />                                 <div class="viewsc_history_col3" st yle="text-align: left;"><%= created != null ? bean.sd_date2java_local_date(created) : "" %></div> <br />                                 <div class="viewsc_history_col4" st yle="text-align: left;"><%= SdClientBean.filter_html_string(created_by) %></div> <br />                              </div> <br />                              <% <br />                           } <br />                           sc = sc_hm.openServicecall(sc_oid); <br />                        } catch (Throwable e) { <br />                        }%>

Он не работает. Если в этой строчке сделать так
Код
sc = sc_hm.openServicecall(11626);
то все открывает как надо, уже хз что делать.
на сколько помнится там есть 2 метода, первый работает по лонг, второй по int. просто ИД должен быть int величиной.
Цитата
Василий Каменев пишет:
на сколько помнится там есть 2 метода, первый работает по лонг, второй по int. просто ИД должен быть int величиной.

я это предположил
Код
sc_id = new Integer(_sc);
заменил
Код
sc = sc_hm.openServicecall(sc_oid);
на
Код
sc = sc_hm.openServicecall(sc_id);
- не помогло, при заходе на эту страницу, вываливается в ошибку компилирования
Код
org.apache.jasper.JasperException: Unable to compile class for JSPNote: sun.tools.javac.Main has been deprecated. <br />An error occurred between lines: 135 and 165 in the jsp file: /WEB-INF/jsp/nn/servicecall_info.jsp <br />Generated servlet error: <br />C:\Program Files\Hewlett-Packard\OpenView\service desk 4.5\service pages\work\localhost\_\WEB-INF\jsp\nn\servicecall_0005finfo$jsp.java:662: Incompatible type for method. Can't convert java.lang.Integer to java.lang.Long. <br />sc = sc_hm.openServicecall(sc_id); <br />
Изменено: Сергей Пушняков - 25.05.2012 09:32:09
Плин тэг Код, коряво отрабатывает) Григорий поправь плиз smile:)
либа писалась давно и для неё int и Integer - это разные типы, пробуй так Integer.parseInt("12345");
Хотя по поводу того что это работает - я понимаю, но как заставить это все автоматически? я хз. ведь как уже писал выше, если ручками поставить - то все отрабатывает как надо
Integer.parseInt("12345");
это работает в твоей версии?
Сделал так:
Код
int sc_id = 0; <br />*** <br />String _sc = request.getParameter("id"); <br />*** <br />sc_id = Integer.parseInt(_sc);

Все заработало - Спасибо!!!
Добрый день! У меня тоже вопрос по Service Pages. На страничке пользователь заполяет поле, в котром вводит некую дату, которую я передаю в поле, например ServicallDate10 (поле для даты в ЗНО), вся беда в том, что функции sc.getServicallDate10 и sc. setServicallDate10 работают с типом Double. Как я поняла, это связано с тем, что в базе они хранятся в секундах, прошедших с эпохи UNIX.То есть по сути дела нужно дату, которую вводит пользователь перевести в Double. Для это я использовала стандартное джавовское преобразование. Выглядит это примерно следущим образом (userdata-то, что вводит пользователь):
SimpleDateFormat sss = new SimpleDateFormat("dd/mm/yyyy HH:MM");

long ddd = sss.parse(userdata).getTime();

Double fff = new Double(ddd);\

if (fff != null) {
sc.setServicecallDate10(fff);
}
Сама страничка мне не выдает никаких ошибок, но при сохранении нового запроса и указании даты в формате, который я указала, выше, выдается такая ошибка:
The date is invalid
Рисунок
Untitled.jpg (6.77 КБ) [ Скачать ]
Изменено: Елена Петрова - 30.05.2012 13:49:22
да там всё просто - есть класс утилит под это дело у bean. или возими от web-api. Утилита преобразовывала Date -> Double. Преобразования long -> double ошибочно. Примера нет под рукой, показать не могу. Смысл дабла в том что дата = дни.часы+мин+сек .
Страницы: 1 2 3 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)

Сегодня были (гостей: 3, пользователей: 0, из них скрытых: 0)