JiraWebActionSupport does not add usual context variables (e.g. textutils, jirautils) to velocity

HA February 10, 2014

I have created a servlet that renders a table. Every row of this table has on its right side a button. This button has a onclick event defined:

onclick=window.location='../../../jira/secure/PersonUpdateAction.jspa?action=update&id=$id'>

The PersonUpdateAction is a webwork item that exends the JiraWebActionSupport. The doExecute method is invoked:

@Override
	public String doExecute() {
		try {
			HttpServletRequest request = this.getHttpRequest();
			IInsertUpdateHelper insertUpdateHelper = InsertUpdateHelperFactory.getInstance(i18nHelper, userManager);

			Map<String, Object> context  = insertUpdateHelper.doAction(request);
			this.personBean = (PersonBean)context.get("personBean");
		} catch (DataAccessException e) {
			LOGGER.debug("catastrophe2: ", e);
		}
		return SUCCESS;
	}

My problem is that after the doExecute in my velocity for testing:

<html>
  <head>
    <meta name="decorator" content="atl.admin">
  </head>
  <body>context: ${requestContext.baseUrl}</body>
</html>

nothing is shown. The requestContext.baseUrl is empty, the decorator does not show anything. I can not access anything that Jira normally provides.

1 answer

1 accepted

1 vote
Answer accepted
HA February 11, 2014

Seems like the servlet context does not have everything I need. The following seems to work for me:

final Map<String, Object> defaultParams = JiraVelocityUtils.getDefaultVelocityParams(jiraAuthenticationContext);
    	final Map<String, Object> additionalParams = new HashMap<String, Object>(defaultParams);
    	additionalParams.put("baseurl", this.applicationProperties.getString(APKeys.JIRA_BASEURL));
        response.setContentType("text/html;charset=utf-8");
        templateRenderer.render("contacts.vm", additionalParams, response.getWriter());

Then I access it via ${baseurl}. The decorator works also now.

Suggest an answer

Log in or Sign up to answer