如何在子组件中包含标准HST组件的所有参数?

时间:2015-06-03 07:27:53

标签: java inheritance hippocms

我的很多自定义组件扩展了EssentialsListComponent。相同的标准HST组件有很多有用的参数,例如pageSizesortOrder(通过控制台输入),我目前必须在我的类中单独处理。这个过程很繁琐,容易出现人为错误。

如何在我的自定义HST组件中一次将所有标准参数应用于我的HST查询?例如,像下面这样的东西会很可爱:

@Override
    protected <T extends EssentialsDocumentListComponentInfo> HstQuery buildQuery(HstRequest request, T paramInfo,
                                                                                  HippoBean scope) {
scope = request.getRequestContext().getSiteContentBaseBean();
try {
HstQuery hstQuery = request.getRequestContext().getQueryManager().createQuery(scope);
hstQuery.applyParameters(paramInfo);// paramInfo should already includes pageSize, sortOrder etc. right?
} catch (Exception e) {
}
}

2 个答案:

答案 0 :(得分:2)

您可以扩展EssentialsDocumentListComponentInfo接口,假设MyDocumentListComponentInfo也是一个接口。 在MyDocumentListComponentInfo界面上覆盖您希望拥有默认值的方法,例如pageSizesortOrder

假设您希望pageSize的默认值为20而不是10.为此,您将使用以下代码:

@Parameter(name = "pageSize", required = true, defaultValue = "20", displayName = "Page size", description = "Nr of items per page")
int getPageSize();

使用此功能,您无需在控制台中声明属性,除非您需要自定义值。

现在在您扩展的组件中,在类声明上方声明以下注释:

@ParametersInfo(type = MyDocumentListComponentInfo.class)

现在您的代码应该可以正常运行,并且每次都需要配置较少的参数。

答案 1 :(得分:0)

请参阅:http://www.onehippo.org/library/concepts/component-development/hstcomponent-parametersinfo-annotation.html

如果扩展组件,则继承其参数。 |如果将其设置为在hst配置中继承,则可以访问这些参数。您还可以重用或扩展现有的parameterinfo接口以使代码更清晰。如果参数信息中没有包含参数,那么您仍然可以按名称引用它。

请注意,文档链接适用于版本10.如果您需要7.9或更早版本的文档,请单击文章顶部的历史记录链接。