| 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/  | 
|