Hi,
I'm newbie in JIRA topic, I trying to create simple form.
I have following class
public class ManageTemplates extends JiraWebActionSupport { public ManageTemplates(FieldScreenRendererFactory fieldScreenRendererFactory, JiraAuthenticationContext jiraAuthenticationContext) { String issueId = ((String[])ActionContext.getParameters().get("id"))[0]; MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject(Long.valueOf(issueId)); } }
Class is connected with .vm file via atlassian-plugin.xml config file. Here's my .vm
<html> <head> <meta name="decorator" content="atl.admin"/> <title>Create X</title> </head> <body class="nl"> <div class="content intform"> </div> </body> </html>
How could I insert user picker to form? Any code examples?
Hi,
I do not knowv how to reuse standard user picker - you must check source code, but why you read parameter 'id' in so complicated way. You should define property id + getter/setter in action class and set it in request as some hidden form field or directly in url.
private String issueId; public String getIssueId() { return issueId; } public void setIssueId(String issueId) { this.issueId = issueId; }
Also you can define other methods in action (not only overwrite execute), eg. to list all JIRA users
public Collection<User> getAllUsers() { return UserUtils.getAllUsers(); }
Than iterate throught results in vm tempate and create eg. select element.
<select id="jiraUser" name="jiraUser"> #foreach ($user in $action.getAllUsers()) <option value="$user.name">$user.displayName</option> #end </select>
Hi Radek,
I wanna ask a question to you. action is the class name or not? I guess it is not :) If so, how can I set a class as action?
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It is not class name. You can use notation as $action.someMethodCall() in any vm template, where action is mapped into the class defined for your webwork in atlassian-plugin.xml
Example:
1. atlassian-plugin.xml
<webwork1 key="action-webwork" name="Test Action module" class="java.lang.Object"> <description key="test.action.webwork.desc">Action used to demonstrate test example.</description> <actions> <action name="com.mycompany.jira.plugin.test.web.actions.TestAction" alias="TestAction"> <view name="error">/template/plugin/webwork/testaction.vm</view> <view name="input">/template/plugin/webwork/testaction.vm</view> </action> </actions> </webwork1>
2. Some parts of vm template "testaction.vm" mapped to action class TestAction.java
#set($names = $action.getNames()) #set($counter = $names.size()) #if($counter > 0) #set( $i = 1 ) #foreach( $name in $names ) <tr> <td class="fieldLabelArea"> $i18n.getText("name.action.label") <span class="icon icon-required"><span>$i18n.getText("general.field.required")</span></span> </td> <td class="fieldValueArea"> <input type="text" id="name_$i" value="$!name"> </td> </tr> #set($i = $i + 1) #end #end
3. TestAction.java
public class TestAction extends JiraWebActionSupport { private String nameList; private TestService testService; public TestAction(TestService testService) { this.testService = testService; } @Override protected void doValidation() { super.doValidation(); // Some other TestAction validation } @Override @RequiresXsrfCheck protected String doExecute() throws Exception { if (hasAnyErrors())return ERROR; // Some execute TestAction code return INPUT; } public String getNameList() { return nameList; } public void setNameList(String nameList) { this.nameList = nameList; } public List<String> getNames() { return testService.getHelper().tokenize(nameList, "@@"); } }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.