# Creating custom plugin in system namespace gives template error

**URL:** <https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913>\
**Category:** Uncategorized\
**Created:** [May 12, 2023, 1:07pm UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913 "2023-05-12T13:07:54Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![gnanamoorthi](https://avatars.discourse-cdn.com/v4/letter/g/7ab992/32.png) [@gnanamoorthi](https://community.bloomreach.com/u/gnanamoorthi)\
**Post date:** [May 12, 2023, 1:07pm UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/1 "2023-05-12T13:07:54Z")

</div>

Hi,  
We have to integrate select drop down with API based options. For that we created an custom plugin and configured in system namespace(hippo:namespaces/system/customPlugin). While adding this plugin document type, it gives below error. But we have required fields customPlugin.html template.

```auto
[INFO] [talledLocalContainer] 12.05.2023 18:35:34 ERROR http-nio-8081-exec-3 [SwallowExceptionMapper.mapUnexpectedExceptions:35] Unexpected error occurred
[INFO] [talledLocalContainer] org.apache.wicket.markup.MarkupNotFoundException: No Markup found for Fragment selectOptionAPI in providing markup container [customPlugin [Component id = item]]
[INFO] [talledLocalContainer] at org.apache.wicket.markup.html.panel.FragmentMarkupSourcingStrategy.getMarkup(FragmentMarkupSourcingStrategy.java:148) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.markup.html.panel.Fragment.newDequeueContext(Fragment.java:139) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.dequeue(MarkupContainer.java:1989) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.onInitialize(MarkupContainer.java:2021) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.Component.fireInitialize(Component.java:878) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer$3.component(MarkupContainer.java:1077) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer$3.component(MarkupContainer.java:1073) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:144) ~[wicket-util-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) ~[wicket-util-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) ~[wicket-util-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) ~[wicket-util-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) ~[wicket-util-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:123) ~[wicket-util-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:192) ~[wicket-util-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java:984) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1072) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.addedComponent(MarkupContainer.java:1048) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.add(MarkupContainer.java:242) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.markup.repeater.RefreshingView.addItems(RefreshingView.java:191) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.markup.repeater.RefreshingView.onPopulate(RefreshingView.java:97) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:124) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.markup.repeater.AbstractPageableView.onBeforeRender(AbstractPageableView.java:115) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.Component.internalBeforeRender(Component.java:950) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.Component.beforeRender(Component.java:1018) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1826) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.Component.onBeforeRender(Component.java:3921) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.hippoecm.frontend.service.render.AbstractRenderService.onBeforeRender(AbstractRenderService.java:525) ~[hippo-cms-api-14.7.13.jar:14.7.13]
[INFO] [talledLocalContainer] at org.hippoecm.frontend.editor.plugins.field.AbstractFieldPlugin.onBeforeRender(AbstractFieldPlugin.java:343) ~[hippo-cms-editor-frontend-14.7.13.jar:14.7.13]
[INFO] [talledLocalContainer] at org.hippoecm.frontend.editor.plugins.field.PropertyFieldPlugin.onBeforeRender(PropertyFieldPlugin.java:183) ~[hippo-cms-editor-frontend-14.7.13.jar:14.7.13]
[INFO] [talledLocalContainer] at org.apache.wicket.Component.internalBeforeRender(Component.java:950) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.Component.beforeRender(Component.java:1018) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1826) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.apache.wicket.Component.onBeforeRender(Component.java:3921) ~[wicket-core-7.18.0.jar:7.18.0]
[INFO] [talledLocalContainer] at org.hippoecm.frontend.service.render.AbstractRenderService.onBeforeRender(AbstractRenderService.java:525) ~[hippo-cms-api-14.7.13.jar:14.7.13]

```

Thanks,  
Gnana moorthi

---

<div class="post-metadata">

**Author:** ![machak](https://yyz1.discourse-cdn.com/flex027/user_avatar/community.bloomreach.com/machak/32/1298_2.png) [@machak](https://community.bloomreach.com/u/machak)\
**Post date:** [May 12, 2023, 1:29pm UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/2 "2023-05-12T13:29:04Z")

</div>

> [@gnanamoorthi](#):
>
> `org.apache.wicket.markup.MarkupNotFoundException: No Markup found for Fragment selectOptionAPI in providing markup container [customPlugin [Component id = item]]`

Wicket is not very forgiving if you are missing a wicket:id in your HTML file…does your HTML file contains selectOptionAPI? (something like wicket:id=“selectOptionAPI” ?

---

<div class="post-metadata">

**Author:** ![gnanamoorthi](https://avatars.discourse-cdn.com/v4/letter/g/7ab992/32.png) [@gnanamoorthi](https://community.bloomreach.com/u/gnanamoorthi)\
**Post date:** [May 12, 2023, 1:38pm UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/3 "2023-05-12T13:38:09Z")

</div>

Yes, this was added in html file. Is this html file need to register in any place. If any documentation out there?

---

<div class="post-metadata">

**Author:** ![Lef\_Karamoulas](https://yyz1.discourse-cdn.com/flex027/user_avatar/community.bloomreach.com/lef_karamoulas/32/82_2.png) [@Lef\_Karamoulas](https://community.bloomreach.com/u/Lef_Karamoulas)\
**Post date:** [May 12, 2023, 1:49pm UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/4 "2023-05-12T13:49:46Z")

</div>

Hey @gnanamoorthi ,

could you please share the documentation page that you followed and also the full class and HTML files you have implemented?

Thanks

---

<div class="post-metadata">

**Author:** ![gnanamoorthi](https://avatars.discourse-cdn.com/v4/letter/g/7ab992/32.png) [@gnanamoorthi](https://community.bloomreach.com/u/gnanamoorthi)\
**Post date:** [May 13, 2023, 8:13am UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/5 "2023-05-13T08:13:49Z")

</div>

@Lef_Karamoulas

This custom plugin code was copied from existing plugin _ **org.onehippo.forge.selection.frontend.plugin.DynamicDropdownPlugin** _ class and updated template file wicket:id field values. We couldn’t find any documentation.

```auto
String mode = config.getString("mode");
        if ("edit".equals(mode)) {
            this.add(new Component[]{this.createSelect(configuredValueList)});
            Label valueLabel = new Label("selectAPILabel");
            valueLabel.setVisibilityAllowed(true);
            this.add(new Component[]{valueLabel});
        } else {
            DropDownChoice<?> dummyChoice = new DropDownChoice("selectAPIDropdown");
            dummyChoice.setVisibilityAllowed(true);
            this.add(new Component[]{dummyChoice});
            Label label = this.createValueLabel(configuredValueList, mode);
            this.add(new Component[]{label});
        }

```

**html file**

```auto

<html xmlns:wicket="http://wicket.apache.org/">

<wicket:panel>
    <wicket:container wicket:id="fragment" />
</wicket:panel>

<wicket:fragment wicket:id="edit">
    <wicket:fragment wicket:id="selectAPIOptionGroup">
        <optgroup wicket:id="optionAPIGroup" label="">
            <wicket:container wicket:id="optionAPIGroupItems">
                <option wicket:id="optionAPI">option</option>
            </wicket:container>
        </optgroup>
    </wicket:fragment>
    <wicket:fragment wicket:id="selectOptionAPI">
        <option wicket:id="optionAPI"><span wicket:id="optionAPILabel"/> </option>
    </wicket:fragment>
    <select wicket:id="selectAPIDropdown" class="dropdown-plugin">
        <span wicket:id="selectAPIDropdownItem"/>
    </select>
    <span wicket:id="selectAPILabel" class="test">Test</span>
    <select class="test">
        <option>TEST</option>
    </select>
</wicket:fragment>

<wicket:fragment wicket:id="view">
    <select wicket:id="selectAPIDropdown" class="dropdown-plugin">
        <span wicket:id="selectAPIDropdownItem"/>
    </select>
    <span wicket:id="selectAPILabel"></span>
</wicket:fragment>

</html>

```

---

<div class="post-metadata">

**Author:** ![gnanamoorthi](https://avatars.discourse-cdn.com/v4/letter/g/7ab992/32.png) [@gnanamoorthi](https://community.bloomreach.com/u/gnanamoorthi)\
**Post date:** [May 13, 2023, 8:21am UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/6 "2023-05-13T08:21:48Z")

</div>

@machak  
yes it was, you con refer html file in below reply.

---

<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:** [May 15, 2023, 7:21am UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/7 "2023-05-15T07:21:00Z")

</div>

One thing to check is whether the .html file ends up in the jar, side by side of the .class file. If not, you’d need to tweak the pom.xml to include non-Java files, typically by:

```auto
  <build>
    <resources>
      <resource>
        <filtering>false</filtering>
        <directory>${basedir}/src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.html</include>
          <include>**/*.css</include>
        </includes>
      </resource>
    </resources>
  </build>

```

HTH  
Jeroen

---

<div class="post-metadata">

**Author:** ![gnanamoorthi](https://avatars.discourse-cdn.com/v4/letter/g/7ab992/32.png) [@gnanamoorthi](https://community.bloomreach.com/u/gnanamoorthi)\
**Post date:** [May 16, 2023, 7:52am UTC](https://community.bloomreach.com/t/creating-custom-plugin-in-system-namespace-gives-template-error/3913/8 "2023-05-16T07:52:29Z")

</div>

Thanks @jeroen.hoffman  
this changes resolved the issue.
