Мое решение этой проблемы состояло в том, чтобы добавить новые поля в файл logwork.jsp. Это код для текстового поля и раскрывающегося списка.
<page:applyDecorator name="auifieldgroup">
<aui:textfield id="'numberOfDefects'" label="text('Number Of Defects')" mandatory="'false'" name="'numberOfDefects'" size="'short'" theme="'aui'" /><br>
</page:applyDecorator>
<page:applyDecorator name="auifieldgroup">
<label for="select-example">Development Phase</label>
<select class="select" id="developmentPhase" name="developmentPhase">
<option>testing</option>
<option>configuration</option>
<option>development</option>
</select>
</page:applyDecorator>
Затем я использовал подключаемый модуль Servlet-Filter, предоставленный Atlassian, и фильтр был настроен для применения к URL-адресам, соответствующим шаблону /secure/CreateWorklog.jspa. Это в atlassian-plugin.xml.
<servlet-filter name="Create Worklog Servlet Filter" i18n-name-key="create-worklog-servlet-filter.name" key="create-worklog-servlet-filter" class="com.pelletier.jira.servlet.filter.CreateWorklogServletFilter" location="before-dispatch" weight="200">
<description key="create-worklog-servlet-filter.description">The Create Worklog Servlet Filter Plugin</description>
<url-pattern>/secure/CreateWorklog.jspa</url-pattern>
<dispatcher>REQUEST</dispatcher>
</servlet-filter>
Затем в моем классе Servlet-Filter я смог получить новые параметры из запроса и записать их в свою базу данных. (К сожалению, не Jira, я слышал, что это не одобряется)
public class CreateWorklogServletFilter implements Filter {
private JdbcTemplate jdbcTemplate = null;
//OSGi injects the JdbcTemplate
public CreateWorklogServletFilter(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
//do stuff with new params from modified jsp
}
@Override
public void destroy() {
}
Я знаком с Spring, поэтому я поместил файл spring.xml в каталог META-INF/spring/ моего плагина, а jar-файлы, необходимые для моего источника данных, и драйвер базы данных в каталог META-INF/lib. JdbcTemplate, настроенный в spring.xml, помещается в пакет OSGi (я думаю), который затем внедряет его в конструктор моей реализации ServletFilter.
person
Ryan Pelletier
schedule
17.08.2015