1

SapTree次のコードでからノードを削除しています。

SapTree tree; // initialized somewhere
String key; // initialized somewhere
String itemname; // initialized somewhere
tree.selectNode(key);
tree.expandNode(key);
tree.ensureVisibleHorizontalItem(key, itemname);
tree.nodeContextMenu(key);
tree.selectContextMenuItem("DELETE_OBJECT");

ただし、パーミッションやその他の依存関係などにより、アイテムを削除できないことがあります。アイテムを削除できたかどうかを確認するにはどうすればよいですか?

上記のメソッドはすべて を返すvoidため、そのようなフィードバックはありません。

私は何を試しましたか?

キーを受け取って何かを返すメソッドのドキュメント ( SapTree [MicroFocus] ) を調べました。boolean exists(String key)または同様の方法を見つけることを期待していました。

4

1 に答える 1

1

keyノードが存在しない場合、パラメータを取るほとんどすべてのメソッドがRuntimeException をスローします。これはgetNodeTop()、ツリーを操作するときに副作用を引き起こしません (selectNode()および その他とは対照的です)。例外をキャッチすることで、ノードが存在するかどうかを判断します。

/**
 * Checks whether a node with the given key exists in the tree
 * @param haystack    Tree to find the key in
 * @param nodeKey     Node key to be found
 * @return True if the node was found (determined by getting the top location), false if the node was not found
 */
private boolean nodeExists(SapTree haystack, String nodeKey)
{
    try
    {
        haystack.getNodeTop(nodeKey);
        return true;
    } catch (RuntimeException rex)
    {
        return false;
    }
}

この回答は、CC0 の下で共同ライセンスされています。

于 2015-03-03T10:19:16.370 に答える