Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to pass values from vm file to a method in Java Class

Rahul_MG May 28, 2020 edited

I have created a plugin which is getting populated in the Jira issue page. Used a .vm file to render the data.My requirement is to get the vales from the fields such as status and remarks field in the Java class method. 

I am new to using the .vm file and tried different mechanism which did not work out.Attaching the classes and the UI screen shot

 

VM File details

 

<style type="text/css">
.init-template-div {
margin-left: 5px;
border: 1px dashed #ccc;
border-radius: 0;
padding: 7px;
transition: background-color 0.01s linear 0.01s;
position: relative;
text-align: center;
}
.init-template-div > div {
padding: 4px 0;
}
</style>
<div id="issue-left" class="module toggle-wrap">
<div id="issue-left_heading" class="mod-header">
<ul class="ops"></ul><a href="#" class="aui-button toggle-title">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14"><g fill="none" fill-rule="evenodd"><path d="M3.29175 4.793c-.389.392-.389 1.027 0 1.419l2.939 2.965c.218.215.5.322.779.322s.556-.107.769-.322l2.93-2.955c.388-.392.388-1.027 0-1.419-.389-.392-1.018-.392-1.406 0l-2.298 2.317-2.307-2.327c-.194-.195-.449-.293-.703-.293-.255 0-.51.098-.703.293z" fill="#344563"></path></g></svg></a>
<!--<h4 class="toggle-title">Configuration CheckLists</h4>-->
</div>
<div class="mod-content">
<div class="table-issue-panel ghx-container" data-nocache="1588788605635" id="elements-ISSUE">
<div data-reactroot="" style="background-color: white;">

<div id="95s1rtdyf" class="module">

<div class="panelHeaderTitleServer mod-header">
<b class="panel-title-label collapse-panel">
<span class="aui-iconfont-arrow2-down aui-icon aui-icon-small "></span>
</b>
<form class="aui top-label" style="margin-top: 15px;" action="/saveCheckPoints">
<fieldset class="top-label">

<div class="field-group top-label">
<label for="generatedNodeId-15">Check Points</label>

<select name="globalConfigurationDetails" id="globalConfigurationDetails"
class="text auiTextInput">
<option value="-1">--Select Issue Types--</option>
#foreach( $globalConfigurationDetails in $globalConfigurationDetailsList )
<option value="$globalConfigurationDetails" >$globalConfigurationDetails</option> #end
</select>
</div>

<div class="field-group top-label">
<label for="generatedNodeId-15">Status</label>

<select name="status" id="status"
class="text auiTextInput">
<option value="-1">-Select Status-</option>
<option value="YES" >YES</option>
<option value="NO" >NO</option>
<option value="NA" >NA</option>
</select>
</div>

<div class="field-group top-label"><label for="issue_panel_new_element47ujln567">Remark</label>
<input type="text" id="remarks" name="remarks" class="text auiTextInput long-field" value="">
</div>

</fieldset>
</form>
</div>

</div>

<span class="issue-form-actions"><button class="aui-button aui-button-compact marginRight" aria-disabled="false">Create</button><a id="1dm5gbplj" href="#" class="actionLink ">Cancel</a></span>
</div>
</div>

</div>
</div>

 

Java Class

 

package com.example.plugins.tutorial;

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.plugin.webfragment.contextproviders.AbstractJiraContextProvider;
import com.atlassian.jira.plugin.webfragment.model.JiraHelper;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.customfields.CustomFieldType;

import java.sql.Timestamp;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import java.sql.Date;
import java.time.format.TextStyle;
import java.util.Locale;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;


import com.atlassian.plugins.tutorial.objects.CustomFieldNames;
import static java.time.temporal.ChronoUnit.DAYS;

import com.atlassian.plugins.tutorial.utils.DBUtils;
import com.atlassian.plugins.tutorial.objects.GlobalConfigurationDetails;

public class DueDateIndicator extends AbstractJiraContextProvider {


@Override
public Map<String, Object> getContextMap(ApplicationUser applicationUser, JiraHelper jiraHelper) {
Map<String, Object> contextMap = new HashMap<>();
Issue currentIssue = (Issue) jiraHelper.getContextParams().get("issue");

String currentIssueType = currentIssue.getIssueType().getName();
String currentStatusType = currentIssue.getStatus().getName();

/**
* Logic to fetch the Configuration based on the issue typeand status.
*/
List<String> globalConfigurationDetailsList = new ArrayList<String>();

globalConfigurationDetailsList = DBUtils.filterGlobalConfigurationDetails(currentIssueType, currentStatusType);

contextMap.put("globalConfigurationDetailsList", globalConfigurationDetailsList);



return contextMap;
}

}

UI  Screen Shot 

screen_create.PNG

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS
atlassian, jira cloud certification, managing jira projects, jira project administration, jira cloud exam, atlassian certification, agile project management, jira workflows, jira permissions, jira training, jira cloud skills, atlassian learning

Become a Certified Jira Service Project Expert 🦸🏻‍♂️

Validate your expertise in managing Jira Service Projects for Cloud. Master configuration, optimize workflows, and manage users seamlessly. Earn global 🗺️ recognition and advance your career as a trusted Jira Service management expert.

Get Certified! ✍️
AUG Leaders

Atlassian Community Events