Stack Overflow на русском Asked by Sergey Gornostaev on November 5, 2021
Задумал я пользователю, удаляющему какую-либо сущность, показывать страничку подтверждения удаления, на которой будет отображаться иерархия всех удаляемых каскадом сущностей. Вроде такого:
И уже начал прикидывать, как это лучше реализовать, но у меня возникло острое чувство велосипедостроения. Наверняка я не первый, кто такое делает. Уверен, даже не в первой тысяче. Вот только Google готовых решений мне не подсказал. Знает кто-нибудь об уже существующих способах решения этой задачи? Если таких нет, было бы интересно обсудить красивые и эффективные варианты.
если загрузить дерево через JPA EntityGraph не целесообразно (например потому что придется "вручную" задавать субструктуры, которые нас интересуют) то можно попробовать хакерский способ:
Answered by Ramiz on November 5, 2021
Вы можете нарисовать такую структуру используя Reflection API:
Возможно, алгоритм, изложенный в файле https://github.com/hawkab/redmine_integration/blob/master/src/main/java/ru/hawkab/redmineintegration/util/InterpolateUtil.java
в методе getMapByObject
вам поможет в формировании целевой структуры.
Answered by hwak on November 5, 2021
Насчет готовых решений я не уверен, но однако ваша ситуация мне напомнила один маленький проект который я реализовал очень давно. Надо было рисовать иерархию файловой системы в виде дерево как у вас. Только я его делал на десктопном приложении. Вот пример кода:
package dir.hierarchy;
import java.io.File;
import java.io.IOException;
public class FileUtil {
public static void main(String[] a) throws IOException {
String path = "/opt/apache-maven-3.5.0";
showDir(1, new File(path));
}
private static void showDir(int indent, File file) throws IOException {
for (int i = 0; i < indent; i++)
System.out.print('-');
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (File file1 : files)
showDir(indent + 4, file1);
}
}
}
}
Пример кода взят отсюда. Вот что он печатает.
-apache-maven-3.5.0
-----bin
---------m2.conf
---------mvn
---------mvn.cmd
---------mvnDebug
---------mvnDebug.cmd
---------mvnyjp
-----boot
---------plexus-classworlds-2.5.2.jar
-----conf
---------logging
-------------simplelogger.properties
---------settings.xml
---------toolchains.xml
-----lib
...
Тут точно такой же принцип, просто Вам надо будет заменить файловую систему на систему категорий. Вам надо будет создать таблицу категорий в БД, показывая отношения родитель-ребенок. Вообщем общая картинка выглядит так.
Answered by GardenMan on November 5, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP