2

Webwork アクションとプロジェクト タブ モジュールを使用して、独自のプラグイン (個別) を作成しました。しかし、ここでは両方を組み合わせる必要があります。いくつかのコンボボックスと、プラグインに統計を計算させるボタンがあります。同じプロジェクトタブに表示する必要があります。

私は両方のステップに問題があります:

  1. プロジェクトタブが表示される前にJavaコードを実行する方法、およびJavaコードがuserManager、groupManagerなどから取得する情報を含むこのページのコンテンツを生成する方法(コンボボックスにユーザー名を入力)。

  2. ユーザーが「Calculate!」を押した後、同じページに新しい情報を出力する方法 ボタン (選択したユーザーの計算された統計)。

プロジェクト パネル タブ (「renderPage」など) でいくつかのメソッドを再定義する必要があると思います。

4

1 に答える 1

5

あなたの最初の質問に:

見てください:プロジェクトタブパネルモジュール

そこで設定する必要があるクラスは、プロジェクト タブ パネルのレンダリングを担当します。通常、いくつかの速度テンプレートをそこにレンダリングします。VersionsProjectTabPanel が実装するインターフェイス ( com.atlassian.jira.plugin.browsepanel.TabPanel ) の 1 つを見てください。getHtml(...)という名前のメソッドがあります。パネルが Web ページに表示される前に、Jira はこのメソッドを呼び出します。

それで、あなたがしなければならないこと:

  1. TabPanelインターフェースを実装するクラスを定義し、このクラスを atlassian-plugin.xml のプロジェクト タブ パネル モジュール記述子に設定します。
  2. メソッドgetHtml(...)を独自のテンプレート レンダリング プロセスで上書きします。
  3. 上書きされたメソッドでは、VelocityManagerへの参照を取得する必要があります:

    VelocityManager velocityManager = ComponentManager.getInstance().getVelocityManager();

  4. 速度テンプレートを作成し、getBody(...)メソッドでレンダリングします。

    String renderedText = velocityManager.getBody("<PATH_TO_TEMPLATE>", "templatename.vm", context);

  5. そのテンプレートにコンテンツを渡したい場合は、getBody(...)メソッドのコンテキスト変数を介して行います。Map のタイプはMap<Object, Object>です。通常、そこに文字列/オブジェクト エントリを配置します。Key-String はテンプレートで変数として宣言され、Value-Object は変数の値です。Map<String, Object>

  6. そのrenderTextを return-Value としてgetHtml(...)の呼び出し元に渡すと、ページに表示されます。

そのトピックに関するいくつかの Q&A とチュートリアルのページ:

2 番目の質問に:

<form>...</form>ベロシティ テンプレートでタグを宣言するだけです。そこにある action-attribute は、Webwork アクション URL を指している必要があります。上書きしたgetHtml (...)メソッドでは、 ServletActionContext を介してHttpServletRequestコンテキストにアクセスする必要があります。

HttpServletRequest request = ServletActionContext.getRequest();
String someRequestParam = request.getParameter("paramName");

前に説明したテンプレート コンテキスト マップを介してリクエスト パラメータのコンテンツを速度テンプレートに渡すか、それを使用して何らかのビジネス ロジックを実行します。

于 2013-09-04T09:46:46.623 に答える