5.7.1 decodeHtmlPartParamメソッド

HTMLパーツから入力されたエンコード文字列を引数として受け取り,Map形式に変換します。

<この項の構成>
(1) 形式
(2) 引数
(3) 戻り値
(4) 例外
(5) 使用例

(1) 形式

public static Map<String, String> decodeHtmlPartParam(String param)
             throws UCNPPluginException;

(2) 引数

(a) param

HTMLパーツから入力されたエンコード文字列が格納されます。

(3) 戻り値

Map<String, String>

HTMLパーツ内の各入力項目に対応した値がMapで返されます。入力項目のname属性をキー,value属性を値とするMapです。引数paramが空文字の場合,空のMapが返されます。ユーザは戻り値のMapから,HTMLパーツで設定した要素のname属性をキーとして,値を取得してください。

(4) 例外

UCNPPluginException - エンコード文字列の変換に失敗した場合

このメソッドでエラーが発生した場合,Map形式への変換処理は中断され,UCNPPluginException例外がスローされます。エラーの一覧を次に示します。

表5-13 decodeHtmlPartParamメソッドで発生するエラー一覧

エラーメッセージID
HTMLパーツの入力パラメタ以外のデータに対して,このメソッドを実行した場合KDCZ10205-E

(5) 使用例

IIoPluginControllerインタフェースのinputFromNodeメソッド内で,decodeHtmlPartParamメソッドを使用する例を説明します。

条件

この例は次の条件に基づいています。

入出力プラグインの実装例

条件に示したHTMLパーツから入力パラメタを受け取って処理する実装例を次に示します。decodeHtmlPartParamメソッドを使用しているのは,太字で示した部分です。

package jp.co.hitachi.soft.ucnp.plugin.sample.ioaction.controller;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import jp.co.hitachi.soft.ucnp.plugin.inputoutput.controller.IIoPluginController;
import jp.co.hitachi.soft.ucnp.plugin.inputoutput.common.UCNPPluginException;
import jp.co.hitachi.soft.ucnp.plugin.inputoutput.util.ParamConvertUtil;

public class IoPluginController implements IIoPluginController {
   /* クライアントから受信した入力パラメタの値を保持するメンバ変数です。 */
   private String param1 = null;
   private String param2 = null;
   private String param3 = null;

   public Map<String, Object> inputFromNode(HttpSession session,
           Map<String, Object> param) {

       /* クライアントに処理結果を送るためのMapを生成します。 */
       Map<String, Object> map = new HashMap<String, Object>();

       /* ボタンの種別で処理を分けます。*/
       String buttonType = (String) param.get("ucnp.button.type");
       if ("show_next_page".equals(buttonType)) {
           /* [次へ]ボタンの場合は,入力の値を取得してメンバ変数で保持します。 */

           /* クライアントから受信したデータをMapに展開します。 */
           Map<?, ?> inParamMap = (Map<?, ?>) param.get("ucnp.current.params.map");

          /* 変換する値をMapより取り出します。 */
          String inParam1 = (String) inParamMap.get("inputItemName1");

           Map<String, String> decodedMap = null;
           /* APIを利用するため,try-catchで囲みます。*/
           try {
               decodedMap = ParamConvertUtil.decodeHtmlPartParam(inParam1);

           } catch (UCNPPluginException e) {
               /* 例外処理を行います。 */
               String errMsg = e.getMessage();
               /* プラグインのログ出力などの処理をします。 */
               /* エラーメッセージをマップに追加して返します。*/
               map.put("ucnp.error.message", errMsg);
               return map;
           }

           /* name属性が「order」のvalue属性の値を取得します。*/
           String value = decodedMap.get("order");

           /* メンバ変数に入力パラメタの値を設定します。 */
           param1 = value;
           param2 = (String) inParamMap.get("inputItemName2");
           param3 = (String) inParamMap.get("inputItemName3");

       } else if ("show_previous_page".equals(buttonType)) {
           /* 戻るボタンの場合は,何もしません。 */
       }

       return map;
   }

   public Map<String, Object> outputToNode(HttpSession session,
           Map<String, Object> param) {

       /* クライアントへ送るMapを生成します。 */
       Map<String, Object> map = new HashMap<String, Object>();

       /* ボタンの種別で処理を分けます。*/
       String buttonType = (String) param.get("ucnp.button.type");
       if ("show_next_page".equals(buttonType)) {
           /* 次へボタンの場合は,入力の値を出力項目へマッピングします。 */

           Map<String, String> outParamMap = new HashMap<String, String>();

           /* Mapに送信するデータを設定します。 */
           /* outputItemName1に固定テキストパーツを設定しているので,
              この固定テキストパーツの値としてHTMLパーツから取得した値を設定します。*/
           outParamMap.put("outputItemName1", param1);
           outParamMap.put("outputItemName2", param2);
           outParamMap.put("outputItemName3", param3);

           map.put("ucnp.next.params.map", outParamMap);

       } else if ("show_previous_page".equals(buttonType)) {
           /* 戻るボタンの場合は,何もしません。 */
       }

       return map;
   }

}