Hippo CMS组件(Spring托管)在目录中(如何使用spring托管目录组件)

时间:2015-07-09 14:17:43

标签: java spring hippocms

我在将Hippo CMS中的Spring与目录结合使用时遇到了问题。

我的目录配置了 componentclassname:ServiceLinkListComponent 所以我可以拖动&将组件放入通道管理器中页面上的占位符。

http://svn.onehippo.org/repos/hippo/hippo-cms7/testsuite/trunk/跟随示例后,我添加了Spring支持,因此我必须将componentclassname更改为 componentclassname:SpringBridgeHstComponent

不幸的是,我无法再将任何Document链接到组件,因为 @ParametersInfo无法识别因为它位于SpringBridgeHstComponent中的bean中。

如何使用spring托管目录组件?

  

组件类

@ParametersInfo(type = ServiceLinkListComponentInfo.class)
@Component
@Scope(value = "prototype")
public class ServiceLinkListComponent extends CommonComponent {

    private static Logger log = LoggerFactory.getLogger(ServiceLinkListComponent.class);

    @Autowired
    public TestService testService;

    @Override
    public void doBeforeRender(final HstRequest request, final HstResponse response) {
        super.doBeforeRender(request, response);
        final ServiceLinkListComponentInfo paramInfo = getComponentParametersInfo(request);
        final String documentPath = paramInfo.getDocument();
        log.debug("Calling EssentialsDocumentComponent for document path:  [{}]", documentPath);

        //String test = testService.test();

        setContentBeanForPath(documentPath, request, response);
        request.setAttribute(REQUEST_ATTR_PARAM_INFO, paramInfo);
    }
}
  

服务类

@Component("testService")
public class TestService {

    public String test(){
        return "hello";
    }
}
  

applicationContext.xml(在resources / META-INF.hst-assembly.overrides中)

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.xxx.yyy" />
</beans>
  

回购   enter image description here

2 个答案:

答案 0 :(得分:0)

我找到了一种方法来做我想做的事,但我认为这是一个肮脏的解决方法。也许HippoCMS的一些人可以在这里提供帮助。

我创建了另一个类:

@ParametersInfo(type = ServiceLinkListComponentInfo.class)
public class ServiceLinkListSpringHstComponent extends SpringBridgeHstComponent {}

需要在目录中设置此类(而不是SpringBridgeHstComponent)。我也尝试了一个嵌套类来摆脱第二个文件,但是hippo找不到它。

答案 1 :(得分:0)

我是桥梁类的原作者。我想你已经找到了当前的限制和合理的解决方法。 : - )

我同意解决方案解决方案不太理想,因为您需要添加尽可能多的子类SpringBridgeHstComponent作为组件配置。

请你在这里提交一张JIRA票据来改善吗? - https://issues.onehippo.com/projects/HSTTWO

顺便说一句,我原本以为这只能在桥类级别进行改进,但似乎需要改进容器级别(特别是相关模块(用于定位))。因此,需要对该模块进行更多调查。