サービスのパラメーターは、標準の html GET パラメーターに似ています。つまり、単なる文字列です (つまり、答えはノーです。「受け入れるパラメーターのタイプを定義する」ことはできません。それらは常に文字列です)。サービスが呼び出されると、すべてのパラメーターが m_binder で使用可能になります。
あなたの場合、次のように呼び出します:
http://<ucm_host>/<ucm_instance>/idcplg?IdcService=MEGE_DOCUMENTS&merge1=docName1,contentId1,contentId2&merge2=docName2,contentId1,contentId2
カスタム サービス MEGE_DOCUMENTS を m_binder で 2 つのパラメータ - merge1 と merge2 - で実行します。次のように取得できます。
String parameter1 = m_binder.getLocal("merge1");
String parameter2 = m_binder.getLocal("merge2");
その後、parameter1 の値は " docName1,contentId1,contentId2 " になり、parameter2 - " docName2,contentId1,contentId2 "になります。
したがって、このサービスが独立して実行されることになっている場合 (たとえば、ブラウザーから / 別のサービスとして)、パラメーターを反復処理する必要があると思います。たとえば、このように(私はそれが醜いことを知っていますが、あなたの状況でできることはそれだけです):
Map<String, String> params = new HashMap<String,String>();
String prefix = "merge";
int index = 1;
boolean hasMoreParams = true;
while(hasMoreParams) {
String paramName = prefix + index;
if(m_binder.m_localData.containsKey(paramName)) {
String paramValue = m_binder.getLocal(paramName);
params.put(paramName, paramValue);
index++;
} else {
hasMoreParams = false;
}
}
サービスが他のサービス/フィルターによって使用される場合 (つまり、Java コードからのみ呼び出される場合)、サービス呼び出しの前にバインダーのローカル データに任意の Java オブジェクト (HashMap など) を配置してから使用することができます。
m_binder.m_localData.put(<Object>, <Object>);
m_localData と m_binder.putLocal() を混同しないでください。m_localData は Property 変数です (HashTable の拡張)。putLocal() は、String パラメーターを 1 つだけ持つメソッドです。