BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 01:16

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Action
СообщениеДобавлено: 13 май 2011, 07:29 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
В layout.xsl есть конструкция, позволяющая показывать клиенту ошибки и уведомления:
Код:
        <xsl:template name="error">
                <xsl:param name="text"/>
                <xsl:choose>
                        <xsl:when test="$text"><div class="errorMessage"><xsl:value-of select="$text"/></div></xsl:when>
                        <xsl:when test="@status = 'error'">
                                        <div class="errorMessage"><b>Ошибка:</b>&#160;<pre><xsl:value-of select="/data/text()"/></pre></div>
                        </xsl:when>

                        <!-- также сообщения будем тоже рисовать -->
                        <xsl:when test="@status = 'message'">
                                <div class="infoMessage"><xsl:value-of select="/data/text()"/></div>
                        </xsl:when>

                        <!-- Это неверный способ передачи сообщения об ошибке. Постепенно убрать везде где используется в Web акшенах. -->
                        <xsl:otherwise>
                                <xsl:for-each select="/data/error">
                                        <br/>
                                        <div class="errorMessage">
                                                <xsl:for-each select="row">
                                                        <xsl:value-of select="@text"/> <br/>
                                                </xsl:for-each>
                                        </div>
                                </xsl:for-each>

                                <xsl:for-each select="/data/message">
                                        <br/>
                                        <div class="infoMessage">
                                                <xsl:for-each select="row">
                                                        <xsl:value-of select="@text"/> <br/>
                                                </xsl:for-each>
                                        </div>
                                </xsl:for-each>
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:template>


В старых экшенах, наследованных от bitel.billing.server.ActionBase есть два метода для установки текста ошибки и уведомления:
setWebErrorMessage
setMsg

В новых, наледованных от ru.bitel.bgbilling.kernel.base.server.action.Action такого нет.
Вместо
Код:
setWebErrorMessage(msg);

я должен делать:
Код:
throw new BGMessageException(msg);


Вопрос:
Что я должен написать вместо setMsg(msg) ??

Сделал свой public class ActionCustomTariffOption extends ActionTariffOption, в котором добавляются всякие декоративные плюшки, вроде оставшихся бесплатных минут по опции в день, предполагаемой стоимости подключения, краткого описания и т.п. Попросили выдавать msg при подключении опции, чтобы как-то визуально подтвердить получение бонуса, ага.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac
СообщениеДобавлено: 13 май 2011, 13:05 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Нет, вы путаете слегка. Раньше было setErrorStatus и setMsg, которые использовались и в обычных экшенах и в вебовских. Потом в обычных упразднили это и надо делать throw new BGMessageException(msg) или throw new BGException(msg), а для веба оставили, ввиду специфики, но переименовали в setWebErrorMessage. setMsg тоже осталось, кажется...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac
СообщениеДобавлено: 13 май 2011, 13:08 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
А, вы про ru.bitel.bgbilling.kernel.base.server.action.Action, это называется "новая технология 2" и должна использоваться только в вебе как альтернатива вебсервисам. Там надо также бросать экзепшены. Различий между ошибкой и мессаге, кажется, нету. Это вообще упразднили, в этом и был смысл бросания экзепшенов. В обычных экшенах есть различия между BGException и BGMessageException, первое логгируется второе - нет, оба показываются юзеру. В вебе всё как ошибка уходит. По коду я не нашёл, чтобы у нас где-то использовись передачи информационых сообщений.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac
СообщениеДобавлено: 13 май 2011, 13:35 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Ясно, т.е. просто информационных нотификаций не будет :(

зы. Кстати, ещё помнится напрягало, что нельзя текст сообщения поправить - лучше бы дополнительно передавался код ошибки, который в xsl обрабатывался при желании.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac
СообщениеДобавлено: 16 май 2011, 16:39 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
setMsg это именно информационное сообщение.
Все сообщения об ошибках переделываются на исключения, а информационные сообщения - setMsg.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac
СообщениеДобавлено: 17 май 2011, 04:08 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Администратор писал(а):
setMsg это именно информационное сообщение.
Все сообщения об ошибках переделываются на исключения, а информационные сообщения - setMsg.

Так его нету в новом контексте :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac
СообщениеДобавлено: 17 май 2011, 08:23 
Не в сети
Клиент
Аватара пользователя

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

layout.xsl:
Код:
<xsl:template name="error">
...
      <xsl:if test="/data/common:result/attributes/item[@key='custom_info_message']/value">
         <div class="infoMessage"><xsl:value-of select="/data/common:result/attributes/item[@key='custom_info_message']/value"/></div>
      </xsl:if>
...
</xsl:template>


action:
Код:
...
result.setAttribute("custom_info_message", msg);
...


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

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


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

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


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

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