BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 05:42

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




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 03 фев 2010, 19:11 
Не в сети

Зарегистрирован: 09 июл 2009, 11:31
Сообщения: 82
Откуда: Россия
Карма: 20
Спасибо, пробую сделать так:

В конфиге сервера:
Код:
test.pids=email:19;login:33


В action'е:
Код:
Setup setup = Setup.getSetup();
HashMap<java.lang.String,java.lang.String> setupPids = (HashMap<java.lang.String,java.lang.String>) setup.getHashValuesWithPrefix( "test.pids" );


Однако, после этого, setupPids.get("email") равен null. Что я делаю неправильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 03 фев 2010, 20:20 
Не в сети

Зарегистрирован: 09 июл 2009, 11:31
Сообщения: 82
Откуда: Россия
Карма: 20
Разобрался, получилось вот так:

В конфиге сервера:
Код:
test.pids.email=19
test.pids.login=33



В action'е:
Код:
Setup setup = Setup.getSetup();
// Точка в конце аргумента getHashValuesWithPrefix важна
HashMap<String,String> setupPids = (HashMap<String,String>) setup.getHashValuesWithPrefix( "test.pids." );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 16 фев 2010, 16:56 
Не в сети

Зарегистрирован: 09 июл 2009, 11:31
Сообщения: 82
Откуда: Россия
Карма: 20
Выложил в Wiki - Изменение параметров договора из личного кабинета


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 05 мар 2010, 17:41 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Реализую свой action.
Создал WebAction_Malfunction.java:
Код:
package bitel.billing.server.contract;

import java.sql.*;
import java.util.List;
import java.lang.*;
import org.w3c.dom.Element;

import bitel.billing.server.contract.action.ActionBase;
import bitel.billing.server.script.bean.*;
import ru.bitel.bgbilling.kernel.script.server.bean.*;

public class WebAction_Malfunction   extends ActionBase
{
    @Override
    public void doAction()
            throws SQLException
    {
        String command = getParameter( "command", "" );
        String type = getParameter( "type", "" );
        String comment = getParameter( "comment", "" );
        if ( command.equals( "add" ) ){
            Object[] args = new Object[4];
            args[0] = cid;
            args[1] = con;
            args[2] = type;
            args[3] = comment;
            String result = ScriptMachineManager.getManager().getScriptForLibrary( "general_malfunction" ).invoke( "AddMalfunctionForWeb", args );
        };

        Element malfunction = createElement( rootNode, "malfunction" );
        String query = "SELECT malfunction_type_title.title, malfunction_date.val "+
                        "FROM contract_parameter_type_7 malfunction_status "+
                        "  INNER JOIN contract_parameter_type_7_values malfunction_status_title "+
                        "  ON (malfunction_status.val=malfunction_status_title.id) "+
                        "  INNER JOIN (contract_parameter_type_7 malfunction_type "+
                        "    INNER JOIN contract_parameter_type_7_values malfunction_type_title "+
                        "    ON (malfunction_type.val=malfunction_type_title.id)) "+
                        "  ON (malfunction_status.cid=malfunction_type.cid AND malfunction_type.pid='63') "+
                        "  INNER JOIN contract_parameter_type_6 malfunction_date "+
                        "  ON (malfunction_status.cid=malfunction_date.cid AND malfunction_date.pid='66') "+
                        "WHERE malfunction_status.cid=? AND malfunction_status.pid='109'";
        PreparedStatement ps = con.prepareStatement( query );
        ps.setInt( 1, cid );
        ResultSet rs = ps.executeQuery();
        if (rs.next()){
            String malfunction_type = rs.getString( 1 );
            String malfunction_date = rs.getString( 2 );
            Element params = createElement( malfunction, "params" );
            params.setAttribute( "type", malfunction_type );
            params.setAttribute( "date", malfunction_date );
        };


    };
};


Пытаюсь скомпилить.
Получаю ошибку:
Код:
root@BGBilling-test-lda:~/lda/BGBillingServer# /usr/lib/jdk/bin/javac -cp ./:lib/* lda/WebAction_Malfunction.java
lda/WebAction_Malfunction.java:27: incompatible types
found   : java.lang.Object
required: java.lang.String
            String result = ScriptMachineManager.getManager().getScriptForLibrary( "general_malfunction" ).invoke( "AddMalfunctionForWeb", args );
                                                                                                                 ^
1 error

Вобщем я пытаюсь часть функционала написать использую библиотеку скриптов.
Но никак не могу получить результат работы функции из библиотеки скриптов.
Прошу разработчиков подсказать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 05 мар 2010, 18:34 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
String result = (String) ScriptMachineManager.ge...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 07 мар 2010, 12:02 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Amir писал(а):
Цитата:
String result = (String) ScriptMachineManager.ge...


К сожалению тоже не получается:
Код:
root@BGBilling-test-lda:~/lda/BGBillingServer# /usr/lib/jdk/bin/javac -cp ./:lib/* lda/WebAction_Malfunction.java
lda/WebAction_Malfunction.java:27: unreported exception bsh.EvalError; must be caught or declared to be thrown
            String result = (String) ScriptMachineManager.getManager().getScriptForLibrary( "general_malfunction" ).invoke( "AddMalfunctionForWeb", args );
                                                                                                                          ^
1 error


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 09 мар 2010, 03:09 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
а так:

Код:
try {
ScriptMachineManager.getManager().getScriptForLibrary( "general_malfunction" ).invoke( "AddMalfunctionForWeb", args );
} catch (Exception ex) {};


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 09 мар 2010, 14:37 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
skn писал(а):
а так:

Код:
try {
ScriptMachineManager.getManager().getScriptForLibrary( "general_malfunction" ).invoke( "AddMalfunctionForWeb", args );
} catch (Exception ex) {};

Теперь все получилось. Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 09 мар 2010, 14:42 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Код:
try {
ScriptMachineManager.getManager().getScriptForLibrary( "general_malfunction" ).invoke( "AddMalfunctionForWeb", args );
} catch (Exception ex) { ex.printStackTrace(); }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 июл 2010, 13:00 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
А как переделать экшн, чтоб был параметр не типа email а Текстовый??

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 июл 2010, 13:28 
Не в сети

Зарегистрирован: 09 июл 2009, 11:31
Сообщения: 82
Откуда: Россия
Карма: 20
Я вот тут выкладывал свой action, там есть обработка текстовых и email-параметров:
http://wiki.bgbilling.ru/index.php/%D0% ... 1%82%D0%B0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 июл 2010, 13:29 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
текстовые это логин??
Я попытаюсь это реализовать, немного осталось....но есть еще вопросы,
Код:
# Имя параметра -> ID параметра
my.pid.email=19
my.pid.login=33
#
# Имя параметра -> Описание параметра
my.desc.email=Email
my.desc.login=Логин
#
# ID параметра -> Имя параметра
my.name.19=email
my.name.33=login
это в настройках сервера должно быть??

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 июл 2010, 13:46 
Не в сети

Зарегистрирован: 09 июл 2009, 11:31
Сообщения: 82
Откуда: Россия
Карма: 20
Оба раза да :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 26 окт 2010, 13:29 
Не в сети

Зарегистрирован: 07 июл 2009, 14:51
Сообщения: 10
Карма: 0
DDPaul писал(а):
Я вот тут выкладывал свой action, там есть обработка текстовых и email-параметров:
http://wiki.bgbilling.ru/index.php/%D0% ... 1%82%D0%B0


Не могу разобраться -- в одном листинге email + vfaxnumber, в другом только emailo, в третьем email + login.. Можно пояснить/поправить и добавить, какой джавакод куда класть -- в lib/my.jar или в скрипты через интерфейс администратора (кстати, а там где? в библиотеке скриптов создать новый?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 26 окт 2010, 13:59 
Не в сети

Зарегистрирован: 09 июл 2009, 11:31
Сообщения: 82
Откуда: Россия
Карма: 20
Action обрабатывает строковые параметры и параметры типа email. Вместо login, vfaxnumber можете использовать свои переменные, они здесь только для массовки. Скрипты поведения создаются стандартным способом, это в документации описано. А action надо помещать в jar-файл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 26 окт 2010, 16:35 
Не в сети

Зарегистрирован: 07 июл 2009, 14:51
Сообщения: 10
Карма: 0
DDPaul писал(а):
Action обрабатывает строковые параметры и параметры типа email. Вместо login, vfaxnumber можете использовать свои переменные, они здесь только для массовки. Скрипты поведения создаются стандартным способом, это в документации описано. А action надо помещать в jar-файл.


создал BGBilingServer/src/WebAction_AdditionalParams.java с текстом action'а,
Код:
BGBillingServer $ javac -cp ./:lib/* src/WebAction_AdditionalParams.java
BGBillingServer $ jar cf lib/my.jar src/


Конфиг сервера и xsl/*.xml файлы тоже пропатчил точно как в вики

перехожу в (появившийся) пункт "Доп. параметры", ввожу любые значения в поля Email и Login, жму "Сохранить" -- страница остаётся той же, только в полях пусто, в логе
Код:
10-26/14:32:45  WARN [http-8080-1] server - action = contract.WebAction_AdditionalParams - not found!
10-26/14:32:54  WARN [http-8080-1] server - action = contract.WebAction_AdditionalParams - not found!


Где моя ошибка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 26 окт 2010, 17:12 
Не в сети

Зарегистрирован: 09 июл 2009, 11:31
Сообщения: 82
Откуда: Россия
Карма: 20
Напутали с путями.

Допустим, что все наработки по биллингу я держу в каталоге /home/paul/bgbilling/.
Action нужно поместить в подкаталог bitel/billing/server/contract.

Далее, находясь в каталоге /home/paul/bgbilling/, нужно выполнить скрипт:

javac -Xlint:unchecked -cp :/opt/BGBillingServer/lib/* bitel/billing/server/contract/WebAction_AdditionalParams.java
jar cf my.jar bitel/
cp -f my.jar /opt/BGBillingServer/lib/
/etc/init.d/bgbilling restart


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 27 окт 2010, 15:37 
Не в сети

Зарегистрирован: 07 июл 2009, 14:51
Сообщения: 10
Карма: 0
Так, уже понятнее. Теперь следующая проблема -- в базу пишется только email, хотя в веб-интерфейсе

Код:
Адрес e-mail изменен на email@email.com
Телефон изменен на 1234567


Как из jar/.class писать свой дебаг в логи сервера?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 28 окт 2010, 06:22 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
this.log.debug("debug test");


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 15 май 2011, 00:52 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Для 5.1 экшен из wiki [http://wiki.bgbilling.ru/index.php/Изменение_параметров_договора_из_личного_кабинета] не подходит? :(
Что-то ошибок не мерянно... Что-то в API поменялось или я накосячил?

Код:
$javac -Xlint:unchecked -cp :/opt/BGBillingServer/lib/* bitel/billing/server/contract/WebAction_AdditionalParams.java

bitel/billing/server/contract/WebAction_AdditionalParams.java:14: cannot find symbol
symbol  : class ActionBase
location: package bitel.billing.server.contract.action
import bitel.billing.server.contract.action.ActionBase;
                                           ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:17: cannot find symbol
symbol: class ActionBase
public class WebAction_AdditionalParams extends ActionBase
                                                ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:24: cannot find symbol
symbol  : variable request
location: class bitel.billing.server.contract.WebAction_AdditionalParams
    request.getSession();
    ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:37: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
    if( cid != 0 )
        ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:40: cannot find symbol
symbol  : variable con
location: class bitel.billing.server.contract.WebAction_AdditionalParams
        ContractParameterManager cpm = new ContractParameterManager( con );
                                                                     ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:43: cannot find symbol
symbol  : variable rootNode
location: class bitel.billing.server.contract.WebAction_AdditionalParams
        Element report = createElement( rootNode, "report" );
                                        ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:56: cannot find symbol
symbol  : variable request
location: class bitel.billing.server.contract.WebAction_AdditionalParams
        String paramValue = request.getParameter( paramName );
                            ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:70: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
            emailParam = cpm.getEmailParam( cid, pid );
                                            ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:73: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
            oldParamValue = cpm.getStringParam( cid, pid );
                                                ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:83: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
                eventBefore = new ContractParamBeforeChangeEvent( cid, pid, emailParam );
                                                                  ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:83: internal error; cannot instantiate bitel.billing.server.script.bean.event.ContractParamBeforeChangeEvent.<init> at bitel.billing.server.script.bean.event.ContractParamBeforeChangeEvent to ()
                eventBefore = new ContractParamBeforeChangeEvent( cid, pid, emailParam );
                              ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:85: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
                eventBefore = new ContractParamBeforeChangeEvent( cid, pid, paramValue );
                                                                  ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:85: internal error; cannot instantiate bitel.billing.server.script.bean.event.ContractParamBeforeChangeEvent.<init> at bitel.billing.server.script.bean.event.ContractParamBeforeChangeEvent to ()
                eventBefore = new ContractParamBeforeChangeEvent( cid, pid, paramValue );
                              ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:91: cannot find symbol
symbol  : method createElement(org.w3c.dom.Element,java.lang.String)
location: class bitel.billing.server.contract.WebAction_AdditionalParams
                element = createElement( report, "row" );
                          ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:102: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
                    cpm.setEmailParam( cid, pid, emailParam, false, 1 );
                                       ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:103: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
                    event = new ContractParamChangedEvent( cid, pid, emailParam );
                                                           ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:103: internal error; cannot instantiate bitel.billing.server.script.bean.event.ContractParamChangedEvent.<init> at bitel.billing.server.script.bean.event.ContractParamChangedEvent to ()
                    event = new ContractParamChangedEvent( cid, pid, emailParam );
                            ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:105: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
                    cpm.setStringParam( cid, pid, paramValue, 1 );
                                        ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:106: cannot find symbol
symbol  : variable cid
location: class bitel.billing.server.contract.WebAction_AdditionalParams
                    event = new ContractParamChangedEvent( cid, pid, paramValue );
                                                           ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:106: internal error; cannot instantiate bitel.billing.server.script.bean.event.ContractParamChangedEvent.<init> at bitel.billing.server.script.bean.event.ContractParamChangedEvent to ()
                    event = new ContractParamChangedEvent( cid, pid, paramValue );
                            ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:131: cannot find symbol
symbol  : variable request
location: class bitel.billing.server.contract.WebAction_AdditionalParams
            request.getSession().removeAttribute( "contract_data" );
            ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:132: cannot find symbol
symbol  : variable rootNode
location: class bitel.billing.server.contract.WebAction_AdditionalParams
            rootNode.setAttribute("status","ok");
            ^
bitel/billing/server/contract/WebAction_AdditionalParams.java:19: method does not override or implement a method from a supertype
    @Override
    ^
Note: bitel/billing/server/contract/WebAction_AdditionalParams.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
23 errors


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 16 май 2011, 08:53 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Да для 5.1 изменились требования для написания Action
Вот пример

Код:
package bitel.billing.server.contract.action.web;

import bitel.billing.server.ActionBase;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.Contract;
import ru.dsi.bgbilling.robokassa.util.ChekContractPeriod;

import org.w3c.dom.Element;

public class ActionOnlinePay extends ActionBase {
   
    @Override
    public void doAction(){
        try{
................
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 17 май 2011, 20:17 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Спасибо с экшеном более менее разобрался. Но с шаблонами XSLT есть проблемы.

1. В конфиге параметр кэширования отключен: xslt.cache=0 и включен html режим: web.mode=html
2. Меняю common.xsl но пункт меню новый не появляется после перезагрузки биллинга
3. Добавляю изменения в шаблон main.xsl и получаю ошибку "Error XSLT file" в браузере.

Как отдебажить XSLT? По синтаксису вроде все верно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 17 май 2011, 21:25 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
В main.xsl внес такие изменения:

Код:
<xsl:template name="title">
<xsl:choose>
   ...
   <xsl:when test="data/@action = 'AdditionalParams'">Additional Parameters</xsl:when>
        ...
   <xsl:otherwise>НОВОСТИ</xsl:otherwise>
</xsl:choose>
</xsl:template>


Код:
<xsl:template match="/data">
<xsl:choose>
        ...
   <xsl:when test="@action = 'AdditionalParams'">
           <xsl:call-template name="AdditionalParams"/>
   </xsl:when>
        ...
   <xsl:otherwise>
      <xsl:call-template name="News"/>
   </xsl:otherwise>
</xsl:choose>
</xsl:template>


Код:
<xsl:template name="AdditionalParams">
 
    <form method='post' action='{$WEBEXECUTER}'>
    <xsl:call-template name="action"/>
    <xsl:call-template name="error"/>
    <input type="hidden" name="command" value="change"/>
    <xsl:if test="@status = 'ok'">
        <div class="infoMessage">
        <xsl:for-each select="/data/report/row">
            <xsl:if test="@status = 'ok'">
            <xsl:value-of select="@parameter" /> changed to <xsl:value-of select="@value" /><br />
            </xsl:if>
            <xsl:if test="@status = 'error'">
            An error occured while changing parameter "<xsl:value-of select="@parameter" />": <xsl:value-of select="@value" /><br />
            </xsl:if>
        </xsl:for-each>
        </div>
    </xsl:if>
 
    <div class="report">
          <table cellspacing='1' id="idTableChangePassword">
          <col class="col1"/>
          <col class="col2"/>
          <tbody>
            <tr>
              <th>Email:</th>
              <td><input type="text" name="email" value="{$email}" size="30" maxlength="100"/></td>
            </tr>
            <tr>
              <th>Mobile Phone:</th>
              <td><input type="text" name="mobilephone" value="{$mobilephone}" size="30" maxlength="20"/></td>
            </tr>
            <tr>
              <th>Contact Name:</th>
              <td><input type="text" name="contactname" value="{$contactname}" size="30" maxlength="20"/></td>
            </tr>
          </tbody>
          <tfoot>
            <tr><td colspan='2'>
              <xsl:call-template name="submit">
                  <xsl:with-param name="title" select="'Save'"/>
              </xsl:call-template>
            </td></tr>
          </tfoot>
          </table>
    </div>
    </form>
</xsl:template>


По прямому запросу http://server:8080/bgbilling/xsl/main.xsl получаю живой листинг XSL.

При это в лог сервера такой высер:

Код:
server 05-17/19:26:30 ERROR [http-8080-1] XSLManager - Error XSLT file main.xsl
java.lang.NullPointerException
        at bitel.billing.server.XSLManager.newTransformer(XSLManager.java:71)
        at bitel.billing.server.XSLManager.getTransformer(XSLManager.java:93)
        at bitel.billing.server.XSLManager.transform(XSLManager.java:148)
        at bitel.billing.server.WebExecuter.doPost(WebExecuter.java:317)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at ru.bitel.server.servlet.filters.MultipartFilter.doFilter(MultipartFilter.java:42)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at ru.bitel.server.servlet.filters.XSSFilter.doFilter(XSSFilter.java:87)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at bitel.billing.server.filters.BGAuthFilter.doFilter(BGAuthFilter.java:238)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at bitel.billing.server.filters.BGAuthFilter.doFilter(BGAuthFilter.java:200)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Unknown Source)


Что может быть не так? Куда копать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 18 май 2011, 06:17 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
1. Смотрите server.out - там конкретная ошибка xsl обычно пишется, а не stacktrace
2. Эта ошибка у вас вот тут:
Код:
        <xsl:for-each select="/data/report/row">
            <xsl:if test="@status = 'ok'">


@status берётся у текущего контекста, а это уже не корневой элемент, а /data/report/row, т.к. мы внутри цикла for-each.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 18 май 2011, 06:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Или у вас у каждого row свой статус?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 18 май 2011, 12:45 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Ага, спасибо. Ругается на отсутствие переменной "email".
Код:
file:/opt/BGBillingServer/webroot/xsl/main.xsl; Номер строки190; Номер столбца95; org.apache.xml.utils.WrappedRuntimeException: Переменная email не найдена

Странно - все переменные определены в common.xsl таким образом.
Код:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:common="http://common.bitel.ru">
^M       
        <!-- Дополнительные параметры договора -->
        <xsl:variable name="email" select="/data/contract_data/parameters/parameter[@pid='12']/@value"/>
        <xsl:variable name="mobilephone" select="/data/contract_data/parameters/parameter[@pid='20']/@value"/>
        <xsl:variable name="contactname" select="/data/contract_data/parameters/parameter[@pid='19']/@value"/>
         
        <xsl:template name="standart_menu">^M
        <tr>^M
           <th><img src="img/strelki.gif"/></th>^M
           <td><a href="?">мНБНЯРХ</a></td> ^M
        </tr>^M
        <tr>     
           <th><img src="img/strelki.gif"/></th>
           <td><a href="?action=AdditionalParams&amp;mid=contract">Additional Parameters</a></td>
        </tr>
        ....
    </xsl:template>
         
</xsl:stylesheet>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 май 2011, 12:07 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Есть идеи, почему переменная не определена?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 май 2011, 12:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Наверное потому, что переменные определяются в common.xsl, а используются в main.xsl
Хотя я так никогда не делал, может и должно работать. Но интуитиция подсказывает, что нет :)
Определите в main.xsl, прямо в template для экшена


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 май 2011, 15:02 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Да, логично. Просто в wiki так говорят делать :)
Ок, ошибка ушла. Осталась одна не понятка - не появляется новый пункт меню, который я добавил в common.xsl
Код:
<tr>     
    <th><img src="img/strelki.gif"/></th>
    <td><a href="?action=AdditionalParams&amp;mid=contract">Additional Parameters</a></td>
</tr>


Может оно в другом файле теперь храниться в 5.1? Поискал - вроде не нашел больше ничего.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свой action в личном кабинете
СообщениеДобавлено: 19 май 2011, 15:09 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Нашел. Меню в версии 5.1 по крайней мере, лежит в файле layout.xsl


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3  След.

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


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

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


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

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