# ValueListProvider backed by Value list Document

**URL:** <https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798>\
**Category:** Experience Manager (PaaS/OnPrem)\
**Created:** [February 6, 2019, 4:07pm UTC](https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798 "2019-02-06T16:07:29Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Davey\_Chu](https://avatars.discourse-cdn.com/v4/letter/d/ecd19e/32.png) [@Davey\_Chu](https://community.bloomreach.com/u/Davey_Chu)\
**Post date:** [February 6, 2019, 4:07pm UTC](https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798/1 "2019-02-06T16:07:29Z")

</div>

Hi community,

I have a @ParametersInfo class that uses a @DropDownList valueListProvider with hard-coded values returned by getValueList(). Is it possible to get these values from, for example, a Value list Document instead? I tried to use SelectionUtil:getValueListByIdentifier, but RequestContextProvider.get().getSiteContentBaseBean() returns null (when trying to edit a catalog item from the Channel Manager)

Kind regards,  
Davey

---

<div class="post-metadata">

**Author:** ![Davey\_Chu](https://avatars.discourse-cdn.com/v4/letter/d/ecd19e/32.png) [@Davey\_Chu](https://community.bloomreach.com/u/Davey_Chu)\
**Post date:** [February 7, 2019, 10:13am UTC](https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798/2 "2019-02-07T10:13:10Z")

</div>

I got it working using the following code, but I’m hoping there’s a less ‘low level’ way:

```auto
public class MyValueListProvider extends GenericValueListProvider {

    @Override
    public Map<String, String> getValueList() {
        try {
            HstRequestContext context = RequestContextProvider.get();
            Node rootNode = context.getSession().getRootNode();
            Node valueListNode = JcrUtils.getNodeIfExists(rootNode, "content/documents/administration/valuelists/myvaluelist");
            HstQueryResult result = context.getQueryManager().createQuery(valueListNode, ValueList.class).execute();
            ValueList valueList = (ValueList) result.getHippoBeans().nextHippoBean();
            return SelectionUtil.valueListAsMap(valueList);
        } catch (Exception e) {
            log.error("Error resolving valuelist", e);
        }

        return new HashMap<>();
    }
}

```

---

<div class="post-metadata">

**Author:** ![jeroen.hoffman](https://yyz1.discourse-cdn.com/flex027/user_avatar/community.bloomreach.com/jeroen.hoffman/32/43_2.png) [@jeroen.hoffman](https://community.bloomreach.com/u/jeroen.hoffman)\
**Post date:** [February 7, 2019, 1:03pm UTC](https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798/3 "2019-02-07T13:03:08Z")

</div>

Not sure about your use case but did you see the Spring instantiated ValueListManager to make ValueLists available in the delivery tier?  
See [https://documentation.bloomreach.com/library/concepts/plugins/selections/delivery-tier.html](https://documentation.bloomreach.com/library/concepts/plugins/selections/delivery-tier.html)

HTH  
Jeroen

---

<div class="post-metadata">

**Author:** ![Davey\_Chu](https://avatars.discourse-cdn.com/v4/letter/d/ecd19e/32.png) [@Davey\_Chu](https://community.bloomreach.com/u/Davey_Chu)\
**Post date:** [February 8, 2019, 12:48pm UTC](https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798/4 "2019-02-08T12:48:43Z")

</div>

Hi Jeroen,

Thank you for your reply. The ValueListManager you mention is what I initially tried (indirectly through SelectionUtil). Should it be possible to getSiteContentBaseBean() when editing a catalog item from the Channel Manager? Any idea why it would return null for me?

Kind regards,  
Davey

---

<div class="post-metadata">

**Author:** ![tiswierad](https://avatars.discourse-cdn.com/v4/letter/t/ad7895/32.png) [@tiswierad](https://community.bloomreach.com/u/tiswierad)\
**Post date:** [March 26, 2020, 8:24pm UTC](https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798/5 "2020-03-26T20:24:51Z")

</div>

Hi @Davey_Chu,

Did you have to do anything special to get access to the RequestContextProvider.get()? When I try to use your low level solution I get the error below.

java.lang.IllegalStateException: No content bean annotation class resource path found.  
[INFO] [talledLocalContainer] at org.hippoecm.hst.content.tool.DefaultContentBeansTool.getAnnotatedClasses(DefaultContentBeansTool.java:122)  
[INFO] [talledLocalContainer] at org.hippoecm.hst.content.tool.DefaultContentBeansTool.getObjectConverter(DefaultContentBeansTool.java:84)  
[INFO] [talledLocalContainer] at org.hippoecm.hst.site.request.HstRequestContextImpl.getObjectConverter(HstRequestContextImpl.java:926)  
[INFO] [talledLocalContainer] at org.hippoecm.hst.site.request.HstRequestContextImpl.createQueryManager(HstRequestContextImpl.java:922)  
[INFO] [talledLocalContainer] at org.hippoecm.hst.site.request.HstRequestContextImpl.getQueryManager(HstRequestContextImpl.java:860)  
[INFO] [talledLocalContainer] at org.hippoecm.hst.site.request.HstRequestContextImpl.getQueryManager(HstRequestContextImpl.java:846)  
[INFO] [talledLocalContainer] at com.staplesconnect.cms.components.ArticleCategoryValueListProvider.(ArticleCategoryValueListProvider.java:34)  
[INFO] [talledLocalContainer] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

---

<div class="post-metadata">

**Author:** ![bcanvural](https://yyz1.discourse-cdn.com/flex027/user_avatar/community.bloomreach.com/bcanvural/32/235_2.png) [@bcanvural](https://community.bloomreach.com/u/bcanvural)\
**Post date:** [March 27, 2020, 8:32am UTC](https://community.bloomreach.com/t/valuelistprovider-backed-by-value-list-document/798/6 "2020-03-27T08:32:40Z")

</div>

Note that you need to setup a few things in the cms webapp to get hold of a valuelist object as bean:  
in your web.xml

```xml
  <context-param>
    <param-name>hst-beans-annotated-classes</param-name>
    <param-value>classpath*:org/onehippo/forge/selection/hst/contentbean/*.class</param-value>
  </context-param>

```

Add this to your cms-dependencies.xml

```xml
    <dependency>
      <groupId>org.onehippo.cms7</groupId>
      <artifactId>hippo-plugin-selections-hst-client</artifactId>
    </dependency>

```

And try again
