Hi,
I have an action class responsible for form preprocessing:
public class ManageTemplates extends JiraWebActionSupport
method is connected with view:
<div class="field-group"> <label>Select user/s</label> <select id="jiraUser" name="jiraUser" multiple="multiple" class="select"> #foreach ($user in $action.getAllUsers()) <option value="$user.name">$user.displayName ($user.emailAddress)</option> #end </select> </div>
And I want to get form parameters... The easiest way is to get params via request object, but I think that's not best practise. How should I serve request? I would appreciate for source code examples:)
Hi, some webwork example below.
Class AttachLink:
public class AttachLink extends JiraWebActionSupport { private static final long serialVersionUID = 9051214974784096025L; protected Long id; protected boolean process; protected String returnUrl; protected ExternalAttachmentService service; public AttachLink(ExternalAttachmentService service) { this.service = service; } protected void doValidation() { MutableIssue issue = null; try { issue = service.getHelper().getIssueManager().getIssueObject(id); } catch (DataAccessException e) { // Error handled in service (above) } if (!service.canCreateExternalAttachment(getJiraServiceContext(),issue)) { return; } } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public boolean getProcess() { return process; } public void setProcess(boolean process) { this.process = process; } public String getReturnUrl() { return returnUrl; } public void setReturnUrl(String returnUrl) { this.returnUrl = returnUrl; } }
Class AttachURLLink:
public class AttachURLLink extends AttachLink { private static final long serialVersionUID = 7847290991189399627L; private String name; private String value; public AttachURLLink(ExternalAttachmentService service) { super(service); } protected void doValidation() { super.doValidation(); if (hasAnyErrors()) return; if (process) { // Ensure that the name is set and no longer than 255 characters if (!TextUtils.stringSet(name)) { addError("name", getText("validation.error.specify.name")); } else { if (name.length() > 255) { addError("name", getText("validation.error.long.name.value", 255)); } } // Ensure that valid URL is set if (!TextUtils.stringSet(value)) { addError("value", getText("validation.error.specify.value")); } else { if (!TextUtils.verifyUrl(value)) { addError("value", getText("validation.error.invalid.value.url.format")); } } } } @Override @RequiresXsrfCheck protected String doExecute() throws Exception { if (hasAnyErrors())return ERROR; if (process) { return executeAttach(); } else return INPUT; } private String executeAttach() { MutableIssue issue = service.getHelper().getIssueManager() .getIssueObject(id); User user = service.getHelper().getUser(); IssueChangeHolder changeHolder = new DefaultIssueChangeHolder(); ChangeItemBean cib = null; cib = service.create(getJiraServiceContext(), issue, name, value); if (cib != null) { changeHolder.addChangeItem(cib); ChangeLogUtils.createChangeGroup(user, issue, issue, changeHolder.getChangeItems(), true); } if (getHasErrorMessages()) return ERROR; else return getRedirect(getReturnUrl()); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
Template attachurllink.vm
<html> <head> <title>$i18n.getText("attach.url.link.title")</title> </head> <body id="jira" class="nl type-a"> #if($action.getErrorMessages() && !$action.getErrorMessages().isEmpty()) #parse( "/template/plugin/webwork/erroraction.vm" ) #else <div id="main-content"> <div class="active-area"> <div id="primary" class="column"> <div class="content intform"> <form action="AttachURLLink.jspa" method="post" name="jiraform" onsubmit="if (this.submitted) return false; this.submitted = true; return true"> <table class="jiraform maxWidth"> <tbody id="urls"> <tr class="titlerow"> <td colspan="2" class="jiraformheader"> <h3 class="formtitle">$i18n.getText("attach.url.link.title")</h3> </td> </tr> <tr class="descriptionrow"> <td colspan="2" class="jiraformheader"> <div class="aui-message info"> <span class="aui-icon icon-info"></span> <p>$i18n.getText("attach.url.link.notify.info")</p> </div> </td> </tr> <tr class="hidden"> <td> <input type="hidden" id="atl_token" name="atl_token" value="$atl_token"> <input type="hidden" id="id" name="id" value="$action.id"> <input type="hidden" id="process" name="process" value="true"> </td> </tr> #if($action.getHasErrors()) #set($err = $action.getErrors()) #end #macro( errortablerow $errors $key) #if ($errors && $errors.get($key)) <tr> <td class="formErrors">&nbsp;</td> <td valign="top" class="formErrors"> <span class="errMsg">$errors.get($key)</span> </td> </tr> #end #end #set($name = $action.getName()) #set($value = $action.getValue()) #errortablerow( $err "name" ) <tr> <td #if($err && $err.get("name")) class="fieldLabelArea formErrors" #else class="fieldLabelArea" #end> $i18n.getText("attach.url.link.name") <span class="icon icon-required"><span>$i18n.getText("general.field.required")</span></span> </td> <td #if($err && $err.get("name")) class="fieldValueArea formErrors" #else class="fieldValueArea" #end> <input type="text" id="name" name="name" size="40" #if($name) value="$name" #end> </td> </tr> #errortablerow( $err "value" ) <tr> <td #if($err && $err.get("value")) class="fieldLabelArea formErrors" #else class="fieldLabelArea" #end> $i18n.getText("attach.url.link.value") <span class="icon icon-required"><span>$i18n.getText("general.field.required")</span></span> </td> <td #if($err && $err.get("value")) class="fieldValueArea formErrors" #else class="fieldValueArea" #end> <input type="text" id="value" name="value" size="40" #if($value) value="$value" #end> </td> </tr> <tr class="buttons-container"> <td class="jiraformfooter">&nbsp;</td> <td colspan="1"> #set($returnAddress = $action.getReturnUrl()) <input type="hidden" id="returnUrl" name="returnUrl" value="$returnAddress"> <div class="aui-toolbar form-buttons noprint"> <div class="toolbar-group"> <span class="toolbar-item"> <input type="submit" name="$i18n.getText('attach.url.link.attach')" value="$i18n.getText('attach.url.link.attach')" id="attachurl_submit" accesskey="s" title="Press Alt+s to submit form" class="toolbar-trigger"> </span> </div> <div class="toolbar-group"> <span class="toolbar-item toolbar-item-link"> <input type="button" name="$returnAddress" value="$i18n.getText('attach.url.link.cancel')" onclick="location.href='$returnAddress'" id="cancel_button" accesskey="`" title="$i18n.getText('attach.url.link.cancel') (Alt + `)" class="toolbar-trigger"> </span> </div> </div> </td> </tr> </tbody> </table> </form> </div> </div> </div> </div> #end </body> </html>
Template erroraction.vm:
#if($action.getErrorMessages() && !$action.getErrorMessages().isEmpty()) <div id="jira-message-container"> <h1>$i18n.getText("error.action.errors")</h1> <div class="aui-message error"> <span class="aui-icon icon-error"></span> #foreach($err in $action.getErrorMessages()) <p>$err</p> #end </div> </div> #end
atlassian-plugin.xml:
<webwork1 key="action-webwork" name="Attachments Link Action module" class="java.lang.Object"> <description key="action.webwork.desc">Action used to manage external attachments links.</description> <actions> <action name="com.company.jira.plugin.name.web.actions.AttachURLLink" alias="AttachURLLink"> <view name="error">/template/plugin/webwork/attachurllink.vm</view> <view name="input">/template/plugin/webwork/attachurllink.vm</view> </action> </actions> </webwork1>
First URL: "/secure/AttachURLLink.jspa?atl_token=" + atl_token + "&id=" + id + "&returnUrl=/browse/" + issue_key
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.