BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 апр 2024, 18:10

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: 6.0 Правка layout.xsl
СообщениеДобавлено: 12 сен 2013, 16:11 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Ув. разработчики пытаюсь в ЛК рядом с номером договора разместить текущий баланс договора, так что бы текущий баланс выл виден при выборе любого пункта меню.
Для этого редактирую layout.xsl.
Однако это файл обрабатывается не всегда, все зависит от того какой пункт меню в ЛК выбран.
Например если выбрать пункт "Новости" то текущий баланс не выводится, а если выбрать меню "Смена тарифных планов" - то выводится.
Прошу подсказать что делать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 12 сен 2013, 16:16 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
вообще оно всегда используется, но там часть на jsp переписана, вроде бы. наверно и там надо менять всё

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 12 сен 2013, 16:52 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Ясно, а не подскажите как выполнить sql запрос в jsp?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 12 сен 2013, 18:15 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
lda писал(а):
Ясно, а не подскажите как выполнить sql запрос в jsp?


ну как то так - http://javatutor.net/articles/jstl-patt ... lication-3
хотя там сложноватый вариант описан


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 12 сен 2013, 22:47 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Все оказалось не так страшно.
Не знаю конечно правильно я сделал или нет.
Главное что работает :)

В общем если кому надо, я сделал так:
Написал java класс:
Код:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package my;

import bitel.billing.server.contract.bean.BalanceUtils;
import java.sql.Connection;
import java.util.Date;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.bgbilling.server.util.Setup;

/**
 *
 * @author lda
 */
public class MyBean {
    private String balance = "0";
    private String cid = new String();

    public void setCid(String cid) {
        this.cid = cid;
    }

    public String getBalance() {
        Setup setup = Setup.getSetup();
        Connection con = setup.getDBConnectionFromPool();
        try{
            balance = new BalanceUtils(con).getBalance(new Date(), Integer.parseInt(cid)).toString();
        }catch (Exception e){   
            e.printStackTrace();
        }finally{
            ServerUtils.closeConnection(con);
        }
       
       
       
        return balance;
    }
   
}


В webexecuter.jsp вызвал это класс и указал cid:
Код:
        <body>
                <div id="all">
                        <!-- logo  -->
                        <div class="header"><div class="logo"></div></div>
                        <!-- end logo  -->

                        <!-- title  -->
                        <c:if test="${not empty contract}">
                        <jsp:useBean id="mybean" class="my.MyBean" scope="page" >
                        <jsp:setProperty name="mybean" property="cid" value="${contract.id}" />
                        </jsp:useBean>
                        </c:if>



В нем же получил баланс:
Код:
Текущий баланс:
<jsp:getProperty name="mybean" property="balance" />


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 19 сен 2013, 06:36 
Не в сети
Клиент

Зарегистрирован: 03 авг 2010, 15:18
Сообщения: 357
Откуда: Камчатка
Карма: 8
Потребовалось управлять отображением пунктов web-меню. Конкретно - выводить пункт смены пароля логина PPPoE при наличии данного активного сервиса на договоре.

Тоже решил написать свой класс:
Код:
public class myUtils
{
   private int INET_MID = 1;

   public boolean isPPPoE(String cid) {
      Setup setup = Setup.getSetup();
      Connection con = setup.getDBConnectionFromPool();
      boolean isPPPoEfound = false;

        try{

         ServerContext context = new ServerContext(setup, INET_MID, 0);
         InetServService inetServService = (InetServService)context.getService(InetServService.class, INET_MID);
         List<InetServ> servList = inetServService.inetServList(Integer.parseInt(cid));

         for(Iterator iterator = servList.iterator(); iterator.hasNext();) {
            InetServ inetServ = (InetServ)iterator.next();
            if( !inetServ.getLogin().isEmpty() && inetServ.getAddressTo() == null && (inetServ.getDateTo() == null || TimeUtils.dateBeforeOrEq(new Date(), inetServ.getDateTo()))) {
               isPPPoEfound = true;
               break;
            }
         }

        }catch (Exception e){   
            e.printStackTrace();
        }finally{
         ServerUtils.closeConnection(con);
        }
        return isPPPoEfound;
    }

   public boolean isPPPoE(int cid) {
      return isPPPoE(Integer.toString(cid));
   }
}

Этот вариант не заработал. При выполнении ругается на java.lang.NullPointerException вызванной InetServService inetServService = (InetServService)context.getService(InetServService.class, INET_MID);
Не знаю почему, победить не смог, может подскажет кто? Если класс вызвать в "Управлении дин.кодом", то работает, а при вызове из jsp - ошибка.

Пришлось переписать и использовать InetServDao для получения сервисов на договоре:
Код:
InetServDao inetServDao = new InetServDao(con, INET_MID, 0);
List<InetServ> servList = inetServDao.list(Integer.parseInt(cid));

Изменил файл webroot/WEB-INF/jspf/include/menu_main.jsp следующим образом:
Код:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ include file="/WEB-INF/jspf/include/taglibs.jsp"%>

<%@ page import="myUtils" %>

<% myUtils mu = new myUtils(); %>

<div class="menu">
<p>Меню</p>
<ul>
        <c:forEach var="menuItem" items="${menuItemList}">
                <c:choose>
                    <c:when test="${contract.balanceMode == 0 and menuItem.action eq 'ContractLimit'}">
                    </c:when>
                    <c:when test="${menuItem.action eq 'ChangeLoginPassword'}">
                        <% if( mu.isPPPoE((Integer)session.getAttribute("contract_data_cid")) ) { %>
                            <li><a href="?action=${menuItem.action}&mid=${menuItem.moduleId}&module=${menuItem.module}&contractId=${contract.id}">${menuItem.title}</a></li>
                        <% } %>
                    </c:when>
                    <c:otherwise>
                        <li><a href="?action=${menuItem.action}&mid=${menuItem.moduleId}&module=${menuItem.module}&contractId=${contract.id}">${menuItem.title}</a></li>
                    </c:otherwise>
                </c:choose>
        </c:forEach>
        <li><a onClick="return confirm('Покинуть страницу статистики?');" href="?action=Exit&amp;mid=contract">Выход</a></li>
</ul>
</div>


Еще одна проблема - приходится самому компилировать класс, засовывать его в jar и кидать в lib/app, иначе почему-то не работает, ругается:
java.lang.NoClassDefFoundError: myUtils


В предыдущем посте в примере использовали jsp:useBean. А я вроде как использовал скриплеты JSP.
Может кто знающий посоветует, что лучше использовать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 19 сен 2013, 10:18 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Я вообще не использую дин.код, мне удобнее писать свою библиотеку.
Во первых это удобнее, а во вторых не везде можно вызвать класс из дин. кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 25 май 2017, 00:04 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Обновляюсь на 7.0.
Вызываю класс:
Код:
         <c:if test="${not empty contract}">
         <jsp:useBean id="layout_bean" class="ru.plague.billing.jsp.LayoutBean" scope="page" >
         <jsp:setProperty name="layout_bean" property="cid" value="${contract.id}" />
         </jsp:useBean>
         </c:if>


он вызывается, но не может найти класс:
Код:
Caused by: java.lang.ClassNotFoundException: ru.bitel.bgbilling.server.util.Setup
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 76 more


В 6.0 все работало.

Как в 7.0. либо вызвать свой класс, либо выполнить sql запрос и вывести результат?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 25 май 2017, 23:38 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Разобрался сам.
В 6.0 свою библиотеку кидал в lib/ext.
В 7.0 заработало только когда положил в lib/app.

Почему так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 6.0 Правка layout.xsl
СообщениеДобавлено: 26 май 2017, 02:33 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
потому что lib/ext не находится в класспатхах, полагаю

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.081s | 38 Queries | GZIP : On ]