この問題に対する私の解決策は、新しいフィールドを 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>
次に、Atlassian が提供する Servlet-Filter プラグイン モジュールを使用し、パターン /secure/CreateWorklog.jspa に一致する URL にフィルターが適用されるように構成しました。これは 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/ ディレクトリに配置し、DataSource に必要な jar とデータベース ドライバーを META-INF/lib ディレクトリに配置しました。spring.xml で構成された JdbcTemplate は、OSGi バンドル (私が思うに) に入れられ、それが私の ServletFilter 実装のコンストラクターに挿入されます。