Olá Galera do GUJ,
Bom estou com um probleminha q teoricamente nao é dificil… porem tem algo que estou fazendo que nao to enxergando…
Tenho um menu recursivo… onde tenho que ir entrando em canais e montando…so que quando chego no ultimo nivel que nao term filhos ele nao monta nd, o menu devera um nivel anterior…
vamo la meu codigo…
<%!
public void montaMenu(Channel currentChannel, JspWriter out) throws IOException, ApplicationException, ValidationException{
//pega o canal corrente
Channel channels[] = ContentUtil.getSubchannels(currentChannel);
// percorre o array com os submenus
for (int j=0; j < channels.length; j++) {
out.println("<br> channels["+j+"].getName() : " + channels[j].getName() );
montaMenu(channels[j], out);
}
if(channels.length==0){
out.println("nao tem filhos!!!!");
// acho que deveria ser aki pra verificar se é o ultimo e subir um nivel..
// mas como vou saber se percorreu td?????
}
}
%>
o menu vederia ser assim, por exeplo;
[img]
[img]
Bomse allguem puder ajudar??
bjs a tdos

Vou ensinar o caminho das pedras: 1º. Vc tem q verificar antes se o nivel não é null e depois se o length dele é maior q 0, ai depois disso vc produz o loop.
2º Trate a exceções referente a esses passos.
Pelo que percebi, isto não é um menu, e sim uma estrutura de pastas de documentos parecida com esta aqui.
Está à usar qual tecnologia(linguagem) para desenvolver? Se me recordo bem, isso é scriptlet?
Bom galera do GUJ,
Gostaria de agradecer… a ajuda…
Consegui resolver o problema, e sim é uma estrutura de folders…
Trabalho atualmente com Vignette, uma ferramenta chamada VCM (Vignette Content Management), uma ferramenta de gestão de conteudo. Pra mim esta sendo um desafio pois há muito pouca documentação…
O desenvolvimento é bem basico em java, utilizando apenas jsp’s e classes… mas aqui temos um problema com classe pelo fato de ter de fazer o deploy e isso requer um monte de processos. por isso optamos em fazer os metodos em jsp msm na propria pagina ate estarem certinhos…
Esse é o metodo:
public void montaMenu(Channel currentChannel, JspWriter out, boolean hasChildren, RequestContext rc) throws IOException, ApplicationException, ValidationException{
if(hasChildren != false){
montaMenu(currentChannel.getParentChannelRef().getChannel(), out, false, rc);
}else{
Channel channels[] = ContentUtil.getSubchannels(currentChannel);
for (int j=0; j < channels.length; j++) {
LinkSpec linkSpec = new LinkSpec();
linkSpec.setOid(channels[j].getContentManagementId().toString());
String channelUrl = LinkBuilder.buildLink(linkSpec,rc,false,false);
String channelName = channels[j].getName();
String aClass = "";
if (j<(channels.length - 1)) aClass = "MenuBarItemSubmenu";
if (j == channels.length - 1) aClass = "last_item";
out.println("<li><a >"+channelName+"</a></li>");
montaMenu(channels[j], out, false, rc);
}
}
}
Esse é a pag:
<%
RequestContext rc = PageUtil.getCurrentRequestContext(pageContext);
try {
Channel requestedChannel = rc.getRequestedChannel();
out.write("<span id='topo_menu'>Acesso rápido </span>");
out.write("<ul class='MenuBarVertical MenuBarActive' id='MenuBar1'>");
montaMenu(requestedChannel, out, (ContentUtil.getSubchannels(requestedChannel).length == 0), rc);
out.write("</ul>");
}catch(Exception e) {
e.printStackTrace();
}
%>
Bom dia a todos…
Eu sei que talvez seja uma pergunta meio ignorante, mas não acharia melhor desenvolver seguindo padrões MVC (3 camadas) usando Faces?
poderia simplificar o
if (hasChildren != false) {
para if(hasChildren)
Achei muito interessante esta ferramenta.
Eu recentemente desenvolvi algo parecido usando JavaSF e PrimeFaces, os dois algoritmos me parecem simples.
att.
Bom dia Takeshi91,
Nussa vc tem razão, é q ontem eu fikei tao loka com essa recursividade q resolvi colocar assim pra facilitar meus teste de mesa… nao consegui enxergar nd… tava osso…
brigada pela dica, vou alterar…
att