Ну я делал свой класс-декоратор ActionCustomTariffOption extends ActionTariffOption, а там уже добавлял в xml-узлы дополнительную инфу.
Как-то так, например:
Код:
public class ActionCustomTariffOption extends ActionTariffOption {
private String infoMessage = null;
/**
* переопределяем execute стандартного экшена, добавляем свои данные в result
*/
@Override
protected Result<ContractTariffOption> execute(int optionId) throws Exception
{
Result<ContractTariffOption> result = super.execute(optionId);
if(null!=this.infoMessage){
result.setAttribute("custom_info_message", this.infoMessage);
}
return result;
}
//Переопределяем activate() - добавляем уведомление о подключении опции
@Override
public void activate() throws Exception{
int optionId = req.getInt("option_id", -1);
TariffOptionManager tm = new TariffOptionManager(this.con);
TariffOption to = tm.get(optionId);
if(to!=null){
this.infoMessage = "Опция '" + to.getTitle() + "' подключена";
}
super.activate();
}
В xsl:
Код:
<xsl:value-of select="/data/common:result/attributes/item[@key='custom_info_message']/value"/>
Соответственно, проверку возможности подключения тоже можно сделать в activate, но тогда юзеру ничего не помешает набрать в браузере action=TariffOption вместо CustomTariffOption и подключить в обход.
По-другому только в 5.2.