2

在 Liferay 中,配置 Action 类是在 liferay-portlet.xml 中定义的。问题是,如果我使用任何 spring 依赖注入,它都不起作用。

<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;
}

如何将这些属性注入到此 Action 类中,而无需ClassPathXmlApplicationContext在类中使用和硬编码 spring.xml 文件

4

3 回答 3

2

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

  1. 通过 liferay 特定的方式,它使用 liferay-portlet.xml 条目。不能用弹簧来管理。

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

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

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

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

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

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

希望这会有所帮助。

于 2014-01-28T07:29:43.607 回答
1

尝试这个

portlet.xml

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

控制器类

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

高温高压

于 2014-01-28T06:37:55.867 回答
0

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

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

于 2014-01-30T02:35:09.453 回答