我正在使用Magnolia RenderingModel
与Freemarker结合使用。
我有以下网址:
http://anyPath/context?productTypes=XXXXX&productTypes=YYYYY
我的渲染模型类看起来像:
class MyModel extends RenderingModelImpl {
...
private String[] productTypes;
...
}
但是,提到的数组只包含第一个值,但不包含第二个值。
我检查了模板指令的行为,如ctx.getParameters()
。这显示了相同的行为,我只获得了返回的第一个值。但是如果我使用ctx.getParameterValues(paramName)
,它会返回两个值。
这引出了以下问题:
答案 0 :(得分:2)
以前在文档中提到它,我相信它仍然是 - 如果你使用.getParameters()
,你只得到多值参数的第一个值。如果您想获得所有值,则需要使用.getParameterValues(String param)
。
据我所知,原因是向后兼容性。
至于更改行为,您需要编写自己的渲染器(例如,通过扩展默认FreemarkerRenderer
并覆盖info.magnolia.rendering.renderer.AbstractRenderer.newModel(Class<T>, Node, RenderableDefinition, RenderingModel<?>)
方法,该方法实例化并填充模型类。
或者,您可以为上面设置的种群方法提供修复,并将其作为补丁提交给Magnolia。虽然.getParameters()
行为是故意的,但模型参数可能不是,所以你很有可能改变它。