forum.bitel.ru http://forum.bitel.ru/ |
|
setMsg в ru.bitel.bgbilling.kernel.base.server.action.Action http://forum.bitel.ru/viewtopic.php?f=19&t=5474 |
Страница 1 из 1 |
Автор: | Cromeshnic [ 13 май 2011, 07:29 ] |
Заголовок сообщения: | setMsg в ru.bitel.bgbilling.kernel.base.server.action.Action |
В 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> <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 при подключении опции, чтобы как-то визуально подтвердить получение бонуса, ага. |
Автор: | dimOn [ 13 май 2011, 13:05 ] |
Заголовок сообщения: | Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac |
Нет, вы путаете слегка. Раньше было setErrorStatus и setMsg, которые использовались и в обычных экшенах и в вебовских. Потом в обычных упразднили это и надо делать throw new BGMessageException(msg) или throw new BGException(msg), а для веба оставили, ввиду специфики, но переименовали в setWebErrorMessage. setMsg тоже осталось, кажется... |
Автор: | dimOn [ 13 май 2011, 13:08 ] |
Заголовок сообщения: | Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac |
А, вы про ru.bitel.bgbilling.kernel.base.server.action.Action, это называется "новая технология 2" и должна использоваться только в вебе как альтернатива вебсервисам. Там надо также бросать экзепшены. Различий между ошибкой и мессаге, кажется, нету. Это вообще упразднили, в этом и был смысл бросания экзепшенов. В обычных экшенах есть различия между BGException и BGMessageException, первое логгируется второе - нет, оба показываются юзеру. В вебе всё как ошибка уходит. По коду я не нашёл, чтобы у нас где-то использовись передачи информационых сообщений. |
Автор: | Cromeshnic [ 13 май 2011, 13:35 ] |
Заголовок сообщения: | Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac |
Ясно, т.е. просто информационных нотификаций не будет ![]() зы. Кстати, ещё помнится напрягало, что нельзя текст сообщения поправить - лучше бы дополнительно передавался код ошибки, который в xsl обрабатывался при желании. |
Автор: | Администратор [ 16 май 2011, 16:39 ] |
Заголовок сообщения: | Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac |
setMsg это именно информационное сообщение. Все сообщения об ошибках переделываются на исключения, а информационные сообщения - setMsg. |
Автор: | Cromeshnic [ 17 май 2011, 04:08 ] |
Заголовок сообщения: | Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac |
Администратор писал(а): setMsg это именно информационное сообщение. Все сообщения об ошибках переделываются на исключения, а информационные сообщения - setMsg. Так его нету в новом контексте ![]() |
Автор: | Cromeshnic [ 17 май 2011, 08:23 ] |
Заголовок сообщения: | Re: setMsg в ru.bitel.bgbilling.kernel.base.server.action.Ac |
Сделал воркэраунд: 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); ... |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |