2014-01-28 4 views
2

В Liferay класс Action Action определен в liferay-portlet.xml Проблема заключается в том, что если я использую любую инъекцию пружинной зависимости, она не работает.Liferay Configuration Action Class - Весенняя зависимость Инъекция

<portlet> 
    <portlet-name>search</portlet-name> 
    <icon>/icon.png</icon> 
    <configuration-action-class>com.mypack.MyConfigurationAction</configuration-action-class> 
    <header-portlet-css>/css/main.css</header-portlet-css> 
    <footer-portlet-javascript>/js/main.js</footer-portlet-javascript> 
    <css-class-wrapper>search-portlet</css-class-wrapper> 
    <add-default-resource>true</add-default-resource> 
</portlet> 

реализация Класс действия

public class MyConfigurationAction extends DefaultConfigurationAction { 

    private @Value("${test.property1}") String property1; 
    private @Value("${test.property2}") String property2; 
} 

Как вводить эти свойства в этот класс действий, без использования ClassPathXmlApplicationContext и жесткого кодирования файла spring.xml в классе

ответ

2

Есть два способа сохранения предпочтений в разработке портлетов [в Liferay],

  1. Через LifeRay определенным образом, который использует запись Liferay-portlet.xml. нельзя управлять весной.

  2. JSR-286 [портал агностик], портлет EDIT режим.

При разработке портлета с фреймворком Spring MVC рекомендуется использовать режим редактирования портлета.

В структуре портлета MVC Spring вы можете отображать запросы портлета в режиме портлета.

Пример: создать класс контроллера, как показано ниже, который будет отображаться в запросах режима EDIT.

@Controller 
@RequestMapping("EDIT") 
public class PreferencesController 

с двумя способами, один из способов с аннотациями @RenderMapping, ответственными за зрения и другого метод с аннотацией @ ActionMapping/@ RequestMapping отвечает за хранение предпочтений.

Надеюсь, это поможет.

+0

Я включил режим EDIT в портлете.xml и сделал, как вы сказали. Но этот класс вообще не вызван. Запрос всегда отправляется в режиме просмотра только при нажатии на «Конфигурация».Если я нажму на «Настройки», он вообще генерирует «Исключение» и не вызовет Controller – Reddy

+1

Нет, вам нужно нажать «Настройки», и какое исключение составляет его генерация. –

1

Попробуйте

portlet.xml 

<supports> 
..... 
<portlet-mode>edit</portlet-mode> 
</supports> 

Класс контроллера

@Controller 
@RequestMapping(value = "EDIT") 
public class XYZ{ 
} 

НТН

0

Прежде всего, «Конфигурация» не является режимом «Редактирование». Если вы включите режим редактирования (как предложено другими), вы получите кнопку «Настройки» в меню вашего портлета. Это функция Liferay, которую вы можете переопределить в соответствии с вашим требованием.

Я не пробовал это сам, но вы можете попробовать использовать @Autowired для автозапуска вашего класса MyConfigurationAction (и, возможно, использовать аннотацию @Required). Не забудьте поставить <context:annotation-config/> в файл applicationContext.xml, если он еще не был выполнен.

+1

Первое, что не было создано Spring класса Configuration [Spring], поэтому Spring никогда не может вводить любые зависимости, даже если вы отмечаете какую-либо аннотацию и добавляете дополнительные условия – Reddy

+0

Думаю, вы ответили сами. Я также проверил в источнике Liferay, если я могу найти способ достичь этого, но класс создается экземпляром класса EditConfigurationAction. Так что это не сработает. –

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