How to render a multilevel menu from a database in jsf?

0

I am trying to build a module of a system of audits using JSF, the summary of the module is: there are audit projects which have questions that a lead auditor must answer and if he can not answer the question, he generates a requirement to a assistant auditor, questions are associated with a factor and many factors are within an activity ....

I'm having trouble generating the following view (it's a mockup): Using a simulation in the console works, that is if the code is very verbose and I know it can be improved:

int banderaPlaneacionEstrategica = 0;
int banderaPlaneacionTactica = 0;
int banderaPlaneacionOperativa = 0;
int banderaEjecucionEstrategica = 0;
int banderaEjecucionTactica = 0;
int banderaEjecucionOperativa = 0;

        for (DetalleProyecto dp : proyectoSeleccionado.getDetalleProyectoList()) {
            if (dp.getPreguntasId().getFactoresId().getActividadesid().getNombre().equals("Planeacion estrategica") && banderaPlaneacionEstrategica == 0) {
                System.out.println(dp.getPreguntasId().getFactoresId().getActividadesid().getNombre());

                for (Factor f : dp.getPreguntasId().getFactoresId().getActividadesid().getFactorList()) {
                    if (f.getActividadesid().equals(dp.getPreguntasId().getFactoresId().getActividadesid())) {
                        System.out.println("\t" + f.getNombre());

                        for (Pregunta pregunta : dp.getPreguntasId().getFactoresId().getPreguntaList()) {
                            if (pregunta.getFactoresId().equals(f)) {
                                System.out.println("\t\t" + pregunta.getNombrePregunta());

                            }

                        }

                    }

                }
                banderaPlaneacionEstrategica = 1;

            }

            if (dp.getPreguntasId().getFactoresId().getActividadesid().getNombre().equals("Planeacion tactica") && banderaPlaneacionTactica == 0) {
                System.out.println(dp.getPreguntasId().getFactoresId().getActividadesid().getNombre());

                for (Factor f : dp.getPreguntasId().getFactoresId().getActividadesid().getFactorList()) {
                    if (f.getActividadesid().equals(dp.getPreguntasId().getFactoresId().getActividadesid())) {
                        System.out.println("\t" + f.getNombre());

                        for (Pregunta pregunta : dp.getPreguntasId().getFactoresId().getPreguntaList()) {
                            if (pregunta.getFactoresId().equals(f)) {
                                System.out.println("\t\t" + pregunta.getNombrePregunta());

                            }

                        }

                    }

                }
                banderaPlaneacionTactica = 1;
                //y asi con las demas actividades, itero y pregunto por el nombre de la actividad y la bandera la establesco a 1, sip se ve horrible :)
            }

and the output that generates me is like this:

Info:   Planeacion estrategica
Info:       entorno
Info:           Análisis de fenómenos económicos que fundamentan la elaboración del plan de marketing que a su vez inciden sobre la compra, consumo o uso del producto
Info:           Análisis de fenómenos culturales que fundamentan la elaboración del plan de marketing que a su vez inciden sobre la compra, consumo o uso del producto
Info:           Análisis de fenómenos tecnológicos que fundamentan la elaboración del plan de marketing que a su vez inciden sobre la compra, consumo o uso del producto
Info:           Análisis de fenómenos demográficos que fundamentan la elaboración del plan de marketing que a su vez inciden sobre la compra, consumo o uso del producto
Info:           Análisis de fenómenos políticos y normativos que fundamentan la elaboración del plan de marketing que a su vez inciden sobre la compra, consumo o uso del producto
Info:           Análisis de las actividades actuales y esperadas de los principales competidores que se han utilizado como referencia en la elaboración del plan de marketing
Info:           Observaciones sobre los stakeholders relevantes que tienen mayor influencia en las actividades de marketing y que pueden afectar la compra, consumo o uso del producto 
Info:           Observaciones sobre los proveedores considerados como estratégicos y que pueden provocar cambios en el mercado, en las actividades de marketing o que pueden afectar la compra, consumo o uso del producto 
Info:           Observaciones sobre los intermediarios considerados como estratégicos y que pueden provocar cambios en el mercado, en las actividades de marketing o que pueden afectar la compra, consumo o uso del producto 
Info:           Descripción de los canales de distribución utilizados para la línea de producto
Info:           Caracterización del mercado donde se compite: Evolución, comportamiento y tendencias
Info:       Posicionamiento
Info:       Participacion
Info:       Penetracion
Info:       Factores clave
Info:       Objetivos empresariales
Info:       objetivos de marketing
Info:       Estructura y RRHH
Info:       Politica, cultura
Info:       Sistemas de marketing
Info:       Recursos
Info:       Conocimientos
Info:       Relaciones
Info:       Formulacion estrategica


Info:   Planeacion tactica
Info:       Producto
Info:           pregunta prueba 3
Info:       Distribucion
Info:       Cominicaciones
Info:       Precio
Info:       Rentabilidad
Info:       Alineacion objetivos

It can be said that I can identify the activities, the factors to which they belong and how many questions each factor has.

The problem is when I want to do the same thing in jsf, when I use the version with managed bean and console I can set the values to the flags variables, in jsf I could not do something like setBanderaXxxxx (1);

                <div class="col-md-12">
                    <ui:repeat value="#{controllerVerProyecto.proyectoSeleccionado.detalleProyectoList}" var="dp" varStatus="i">
                        <h:panelGroup class="col-md-2" rendered="#{dp.preguntasId.factoresId.actividadesid.nombre eq 'Planeacion estrategica' and banderaPlaneacionEstrategica eq 0}">
                            <div class="dropdown">
                                <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">#{dp.preguntasId.factoresId.actividadesid.nombre}
                                    <span class="caret"></span></button>
                                <ul class="dropdown-menu">
                                    <ui:repeat value="#{dp.preguntasId.factoresId.actividadesid.factorList}" var="f">
                                        <h:panelGroup rendered="#{f.actividadesid.equals(dp.preguntasId.factoresId.actividadesid)}">
                                        <li><a href="#">#{f.nombre}</a></li>

                                        </h:panelGroup>
                                    </ui:repeat>
                                </ul>
                            </div>

                        </h:panelGroup>
                        #{banderaPlaneacionEstrategica}
                        <c:set var="banderaPlaneacionEstrategica" value="1" />
                        #{banderaPlaneacionEstrategica}
                    </ui:repeat>

                    <h:inputText value="#{controllerVerProyecto.miVar}"></h:inputText>
                </div>

and the output in the user agent is very funny .... All the dropdown have the same internal items since I could not establish the new value of the flag.

I also used jstl (c: set) to create the flag variables and it did not work, according to the previous thing I would like that please help me generate in html the mockup that I show them from the information of the database and if They also have some suggestion with the database. thanks.

    
asked by LEVIATHANDAVID 19.06.2018 в 04:54
source

0 answers