0

我有包含“动态下拉”字段的文档类型,我想用一些动态数据填充它。我不知道该怎么做(找不到任何足够的信息、文档和示例)。从我发现的链接中,我能够做以下事情:

1)我在/hippo:configuration/hippo:frontend/cms/cms-services中创建了名为SitemapValueListProvider的服务,具有以下属性: plugin.class = com.test。 cms.components.SitemapService valuelist.provider = service.valuelist.custom

2) 在 CMS 项目中创建类 com.test.cms.components.SitemapService

public class SitemapService extends Plugin implements IValueListProvider {

  private final static String CONFIG_SOURCE = "source";

  public SitemapService(IPluginContext context, IPluginConfig config) {
    super(context, config);

    String name = config.getString(IValueListProvider.SERVICE, "service.valuelist.custom");
    context.registerService(this, name);
  }

  @Override
  public ValueList getValueList(String name, Locale locale) {
    ValueList valuelist = new ValueList();

    if ((name == null) || (name.equals(""))) {
        System.out.println("No node name (uuid or path) configured, returning empty value list");
    } else {
        valuelist.add(new ListItem("custom4", "Custom Value 4"));
        valuelist.add(new ListItem("custom5", "Custom Value 5"));
        valuelist.add(new ListItem("custom6", "Custom Value 6"));
    }

    return valuelist;
  }

  @Override
  public List<String> getValueListNames() {
    List<String> list = new ArrayList<>(1);
    list.add("values");
    return list;
  }

  @Override
  public ValueList getValueList(IPluginConfig config) {
    if (config == null) {
        throw new IllegalArgumentException("Argument 'config' may not be null");
    }
    return getValueList(config.getString(CONFIG_SOURCE));
  }

  @Override
  public ValueList getValueList(String name) {
    return getValueList(name, null/*locale*/);
  }
}

3) 在 CMS 项目中创建类 com.test.cms.components.TestPlugin

public class TestPlugin extends Plugin{

  public TestPlugin(IPluginContext context, IPluginConfig config) {
    super(context, config);
    context.registerService(this, "service.valuelist.custom");
  }    
} 

4) 对于文档类型的字段/hippo:namespaces/cms/TestItem/editor:templates/_default_/dynamicdropdown提供以下属性:(使用控制台)
plugin.class = com.test.cms.components.TestPlugin

但仍然无法动态获取数据。什么都没有发生。
我正在使用 HippoCMS 10 社区版

4

1 回答 1

0

你完全在正确的轨道上,我找不到任何明显的原因为什么这不起作用。你能仔细检查一些事情吗?

  • 在日志中查找错误,可能在 CMS 的早期启动时。引导过程中可能出现错误。
  • 在 CMS 中激活开发模式:这会在 CMS 中添加额外的日志记录。 http://www.onehippo.org/library/development/debug-wicket-ajax-in-the-cms.html
  • 你也可以尝试通过输入错误的类名来破坏配置:如果你没有 ClassNotFound 那么你知道你的配置是错误的和/或没有被选中。

HTH。

于 2015-09-08T08:21:59.283 回答