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

Java 如何在子组件中包含标准HST组件的所有参数?,java,inheritance,hippocms,Java,Inheritance,Hippocms,我的许多自定义组件扩展了。同一个标准HST组件有许多有用的参数,例如pageSize和sortOrder(通过控制台输入),目前我必须在类中单独处理这些参数。这个过程冗长乏味,容易出现人为错误 如何将所有标准参数一次应用于自定义HST组件中的HST查询?例如,下面这样的东西会很可爱: @Override protected <T extends EssentialsDocumentListComponentInfo> HstQuery buildQuery(HstReques

我的许多自定义组件扩展了。同一个标准HST组件有许多有用的参数,例如
pageSize
sortOrder
(通过控制台输入),目前我必须在类中单独处理这些参数。这个过程冗长乏味,容易出现人为错误

如何将所有标准参数一次应用于自定义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) {
}
}
@覆盖
受保护的HstQuery buildQuery(HstRequest请求,T paramInfo,
希波贝范围){
scope=request.getRequestContext().getSiteContentBaseBean();
试一试{
HstQuery HstQuery=request.getRequestContext().getQueryManager().createQuery(范围);
hstQuery.applyParameters(paramInfo);//paramInfo应该已经包括pageSize、sortOrder等,对吗?
}捕获(例外e){
}
}
请参见:

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


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

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

假设您希望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)

现在,您的代码应该可以正常工作,每次配置的参数应该更少。

在一般Java语言中,这是否意味着将所有公共属性从一个对象复制到另一个对象?首先,我不确定这里讨论的组件参数是否与您第二次提到的公共属性相同,父类有一种将参数放入最终HST查询的方法。假设它是通过方法
applycomparams
完成的,为什么我的类不能调用类似
super.applycomparams
的东西呢?