alguien tiene una idea de como desplegar un menú desde una base de datos en java, estoy usando oracle tengo mi tabla con las opciones del menu y algunos con sus hijos, en mi web un diseño tipo acordeón para el menu y submenu ingresados en duro.
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
1 Respuesta
JDBC
public class Menu {
private String name;
private MenuOption[] options;
}
public interface MenuOptionActionable {
void accion();
}
public class MenuOption {
private String name;
public void accion(MenuOptionActionable actionable) {
actionable.accion();
}
}
public Menu getMenuByName(String name) {
Menu menu;
String sql = "SELECT id_menu, nombre FROM menu WHERE nombre = ?";
try (Connection connection = ConnectionUtil.get();
PreparedStatement pst = connection.prepareStatement(sql)) {
pst.setString(name);
ResultSet rs = pst.executeQuery();
if(rs.next()) {
menu = new Menu(rs.getString("nombre"));
String sql2 = "SELECT nombre FROM menu_option WHERE id_menu = ?";
List<MenuOption> options = new ArrayList<>();
try(PreparedStatement pst2 = connection.prepareStatement(sql)) {
// id del menú para obtener los submenús
pst2.setInt(rs.getInt('id_menu'));
ResultSet rs2 = pst.executeQuery();
while(rs.next()) {
options.add(new MenuOption(rs2.getString("nombre")));
}
}
menu.setOptions(options);
}
} catch(SQLException e) {
logger.severe(e.getMessage());
}
return menu;
}
Por ejemplo, quieres obtiener el submenú 3 del menú "Usuario", que viene a ser "Registrar" y asignarle una acción:
List<Menu> menus = getMenuByName("Usuario");
MenuOption registerOption = menus.getOptions().get(3);
// le asignas una acción
registerOption.action(() -> {
System.out.println("Registrar algo");
});
JPA
Con JPA es mucho más sencillo, solo basta anotar las clases y crear una unidad de persistencia (persistence.xml
):
@Entity
@NamedQuery(name="FindById", query="SELECT c.id, c.name FROM Menu c WHERE c.name = :name");
public class Menu {
@Id @GeneratedValue
private ing id;
private String name;
@OneToMany
private MenuOption[] options;
}
public interface MenuOptionActionable {
void accion();
}
public class MenuOption {
@Id @GeneratedValue
private int id;
private String name;
public void accion(MenuOptionActionable actionable) {
actionable.accion();
}
}
EntityManagerFactory emf = Persistence.createEntityManagerFactory('TU_UNIDAD_PERSISTENCIA');
EntityManager em = emf.createEntityManager();
TypedQuery<Menu> menuUsuario = em.createNamedQuery("FindMenyById");
menuUsuario.setParameter("name", "Usuario");
Menu menu = menuUsuario.getSingleResult();
List<MenuOption> options = menu.getOptions();
MenuOption optionRegistrar = options.get(3);
optionRegistrat.action(() -> {
System.out.println("Registrar algo");
});
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 407072
- 1
- Jul 5, 2015
Sin Respuesta
-
- 155
- 0
- Mar 19
-
- 74
- 1
- Feb 26
-
- 188
- 0
- Ene 30
-
- 980
- 0
- Nov 7, 2023
-
- 287
- 0
- Sep 19, 2023
-
- 300
- 0
- Ago 21, 2023
-
- 381
- 0
- May 14, 2023
-
- 350
- 0
- Abr 21, 2023
- ver todas
Preguntas relacionadas
- Como trabajar los cambios de base de datos para un proyecto con cambios continuos manejado en ramas
- Reporte en phpword de imagenes desde la Base de datos
- Como mostrar el correo de un usuario en php desde una base de datos
- comparar las horas en java obtenidas desde la base de datos de mysql
- como puedo insertar un detalle de jquery a una base de datos
Actividad Reciente
Santiago2610 comentó Mar 23
Acualizar ChoiceField en djangoSantiago2610 preguntó Mar 19
Acualizar ChoiceField en djangogonzalss preguntó Feb 26
Script /boot/ scrapingParkJo preguntó Ene 30
No me deja instalar Oracleelporfirio respondió Ene 10
Actualizar la imagen con los datos devuelto en un …ovedg preguntó Dic 31, 2023
Actualizar la imagen con los datos devuelto en un …Ehdez preguntó Nov 7, 2023
Necesito en wordpress un pluging que me calcule la…pedrourday preguntó Sep 19, 2023
Alternativas a ThreeJS y BabylonJS?pedrourday preguntó Ago 21, 2023
¿Que tecnologias y lenguajes me recomiendan?Fabio respondió Jul 11, 2023
plugin de efecto circular 3d en imagenes
Ultimas Preguntas
Preguntas relacionadas
- Como trabajar los cambios de base de datos para un proyecto con cambios continuos manejado en ramas
- Reporte en phpword de imagenes desde la Base de datos
- Como mostrar el correo de un usuario en php desde una base de datos
- comparar las horas en java obtenidas desde la base de datos de mysql
- como puedo insertar un detalle de jquery a una base de datos
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150460 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos
Todos los Usuarios Usuarios Nuevos
...