0

我有文檔類型,其中包含「動態下拉」字段,我想用一些動態數據填充它。我無法弄清楚如何去做(找不到任何足夠的信息,文件,關於這方面的例子)。從我發現我能夠做以下的事情鏈接:

1)我已經創建的服務稱爲SitemapValueListProvider/河馬:配置/河馬:前端/ CMS/CMS服務,具有以下特性:
plugin.class = com.test.cms.components.SitemapService
valuelist.provider = service.valuelist.custom如何用動態值填寫Hippo CMS中的動態下拉菜單?

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)對於現場/河馬:命名空間/ CMS/TestItem /編輯:文件類型的模板/ _default_/dynamicdropdown只要下列性質:(使用控制檯)
plugin.class = com.test.cms.components.TestPlugin

但仍無法動態地獲得數據。完全沒有任何反應。
我正在使用HippoCMS 10社區版

回答

0

您完全是在正確的軌道上,我無法找到任何明顯的原因,爲什麼這是行不通的。你可以仔細檢查幾件事情嗎?

  • 尋找在日誌中的錯誤,可能在CMS的早期開始。也許在引導過程中有錯誤。
  • 激活CMS中的開發模式:這會在CMS中增加額外的日誌記錄。 http://www.onehippo.org/library/development/debug-wicket-ajax-in-the-cms.html
  • 您還可以嘗試通過輸入錯誤的類名稱來破壞配置:如果您沒有ClassNotFound,那麼您知道您的配置錯誤和/或無法拾取。

HTH。

+0

謝謝!我已啓用額外的日誌記錄,現在我有下一個日誌:
[AbstractRepeater.onBeforeRender:134]中繼器的子組件org.apache.wicket .markup.repeater.RepeatingView:selectDropdownItem有一個非安全的子級id dropdownListViewItem- 0。安全的兒童標識符只能由數字組成。 – Nur4I