Get a list of projectnames in velocity

Stefan Lindtner August 24, 2014

Hi am new to JIRA Development and have encountered my first Problem

I need to get a List of all Jira-Projects in something like a dropdown menu

This is my Java Code which simply renders the velocity

templateRenderer.render("serviceTime.vm", response.getWriter());

In my Velocity the code looks like this

<div class="field-group">
   <label for="dProj">Project</label>
      <select class="select" id="dProj" name="Projects">
  	#foreach ($pr in $projectManager.getProjectObjects())
                  <option>$pr.getName()</option>
        #end    
     </select>
</div>

But my selectmenu remains empty

do i miss something here ?

when i do a simple check in JAVA like...

for(int i = 0;i < projects.size(); i++){
        	
        	System.out.println(" Project : " + projects.get(i).getName());
        	
        }

it works, why not in the velocity

Best Regards

1 answer

1 accepted

1 vote
Answer accepted
Andreas Ebert
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 24, 2014

Your velocity template probably does not know about $projectManager. You have to add a reference to a ProjectManager to the velocity context.

What class is templateRenderer? Can it add objects to the velocity context?

I would use com.atlassian.jira.template.VelocityTemplatingEngine for that, e.g.:

import static com.atlassian.jira.template.TemplateSources.file;

VelocityTemplatingEngine templatingEngine = ComponentAccessor.getComponent(VelocityTemplatingEngine.class); // or constructor injection

Map<String, Object> velocityParams = ComponentAccessor.getVelocityParamFactory().getDefaultVelocityParams();
velocityParams.put("projectManager", ComponentAccessor.getProjectManager());

templatingEngine.render(file(pathToYourTemplate))
                .applying(velocityParams)
                .asPlainText(response.getWriter()); // or asHtml(...)

Stefan Lindtner August 24, 2014

i was using com.atlassian.templaterenderer.TemplateRenderer

but i got it now thank u...did not know the velocity needs a reference

Logan Clemons September 16, 2019

Can you send me a sample of your code?

Suggest an answer

Log in or Sign up to answer