Liferay配置操作类 - Spring依赖注入

时间:2014-01-28 05:44:33

标签: java spring-mvc liferay portlet spring-portlet-mvc

在Liferay中,配置操作类在liferay-portlet.xml中定义 问题是,如果我使用任何弹簧依赖注入,它就无法正常工作。

<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文件的情况下将这些属性注入此Action类

3 个答案:

答案 0 :(得分:2)

有两种方法可以在portlet开发中保存首选项[在liferay中],

  1. 通过liferay特定方式,使用liferay-portlet.xml条目。不能用春天来管理。

  2. JSR-286 [门户不可知],portlet编辑模式。

  3. 在使用Spring MVC框架开发portlet时,建议使用portlet EDIT模式。

    在Spring MVC portlet框架中,您可以通过portlet模式映射portlet请求。

    例如:创建如下控制器类,它将映射到编辑模式请求。

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

    有两个方法,一个带注释的方法@RenderMapping,负责视图和其他带注释的方法@ ActionMapping / @ RequestMapping负责存储首选项。

    希望这会有所帮助。

答案 1 :(得分:1)

试试这个

portlet.xml

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

控制器类

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

HTH

答案 2 :(得分:0)

首先,“配置”不是“编辑”模式。如果您启用编辑模式(按照其他人的建议),您将在portlet菜单中获得“首选项”按钮。这是一个Liferay功能,您可以根据您的要求覆盖。

我自己没有尝试过,但您可以尝试使用@Autowired自动加入MyConfigurationAction类(如果需要,可以使用@Required注释?)。不要忘记将<context:annotation-config/>放在applicationContext.xml文件中,如果尚未完成的话。