2015-10-26 2 views
1

Liferay имеет функцию для модификации Struts Action с использованием крючка, который прямолинейный. Однако я пытаюсь переопределить метод getJSON для RateEntryAction.Liferay overriding JSONAction с помощью крюка

Вариант использования: мне нужен общий положительный результат и общий отрицательный результат, а не средний балл, который дает компонент рейтинга OOTB Лиферэй.

У меня уже есть необходимые методы, доступные в API Liferay, чтобы получить итоговые положительные и отрицательные оценки. Я создал собственный тип, похожий на «звезды» и «голоса», чтобы написать логическую логику. Затем я планировал переопределить действие struts, представленное/portal/rate_enty, чтобы переопределить метод и добавить отрицательные и положительные голоса в json, который уже возвращается.

Но RateEntryAction (который является исходным классом) расширяет JSONAction и отменяет метод getJSON. Можно ли переопределить метод getJSON с помощью привязки действий struts?

ответ

4

Я вижу этот класс действий в struts-config.xml, так что это действие Struts. Это путь, который вы можете попробовать переопределить.

<action path="/portal/rate_entry" type="com.liferay.portal.action.RateEntryAction" /> 

Я бы попробовал переопределить этот путь и посмотреть, может ли там поставить свою логику.

RateEntryAction распространяется от JSONAction, а это от org.apache.struts.action.Action, который является тем же классом, что и PortletAction.

Надежда эта помощь

+0

Это то, что я сделал раньше. Но getJson нельзя переопределить. Мне пришлось переопределить метод выполнения –

1

As RateEntryAction не является действием Struts, вы не можете перегружать его с помощью крючка Action Struts. Я не знаю, какой способ перехватить его, поэтому я думаю, вам придется либо пойти на ext, либо ввести совершенно новую функцию JSON API, и перехватить все места в Liferay, которые теперь относятся к исходной реализации перейдите к вашей реализации.

Я подозреваю, что в этом случае плагин ext будет проще в обслуживании. Кто-то исправит меня, если я ошибаюсь.

+0

Actual RateEntryAction расширяет JSONAction, который проходит StrutsAction, так что технически RateEntryAction является Действие Struts –

+1

Упс, извините. Я пропустил имя пакета Action и отвлекся от косвенности, тайно приняв неправильную вещь. Мой плохой, извините за ввод в заблуждение. Похоже, @ Joaco1977 нашел ответ, повысив его. –

2

Согласно моим исследованиям, мы можем только подключить com.liferay.portal.struts.PortletAction суб-классы, да JSONAction также расширить org.apache.struts.action.Action класс такой же, как PortletAction, но Liferay позволяют только те классы, которые доступны в классе PortletAction, за исключением этого.

Смежные вопросы