The button/link/text component needs to have a Form in its ancestry. Please add [RESOLVIDO]

17 respostas
collinsjws

Olá,
Iniciei um projeto web com JSF 2, glassfish 3.1 e primefaces 2.2.1 e estou com o seguinte problema:
Ao colocar um menuBar aparece a segiunte mensagem: The button/link/text component needs to have a Form in its ancestry. Please add .
Eis o código da minha página:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui">

    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link href="#{facesContext.externalContext.requestContextPath}/css/conv115.css" rel="stylesheet" type="text/css" />
        <link href="#{facesContext.externalContext.requestContextPath}/css/skinSiatWeb/jquery-ui-1.8.11.custom.css" rel="stylesheet" type="text/css" />
        <title>Convênio 115</title>
    </h:head>

    <h:body>
        <p:spacer height="10"/>
        <div id="principal">
            <div id="top"/>

            <ui:insert name="menu">
                <h:form>
                    <div id="menu">
                        <p:menubar>
                            <p:submenu label="File" icon="ui-icon ui-icon-document">
                                <p:menuitem value="Sair" action="#{usuarioMB.efetuarLogoff}" ajax="false"/>
                            </p:submenu>
                        </p:menubar>
                    </div>
                </h:form>
            </ui:insert>

            <div id="content">
                <ui:insert name="content">Content</ui:insert>
            </div>

            <div id="bottom">
                <p >
                    &lt;h:outputLabel value="Site Desenvolvido pelo Corpo Técnico da © Todos os Direitos Reservados"
                                   styleClass="campoBranco"/&gt;
                </p>
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/h:body&gt;
&lt;/html&gt;

Agradeço desde já quem puder me dizer como resolver este problema.

17 Respostas

luxu

Bom estava usando o Netbeans e tive esse problema e me parece que o problema é do jar do mojarra que deve ser 2.1.0 voltando pra versão 2.0.4 resolveu o problemas, num testei pois utilizo o Eclipse e lah jah está o 2.0.4 e nunca deu esse problema…

caputojf1

o <p:menu> deve estar dentro da tag <h:form>
Isso resolve o seu problema.

Abs,

caputojf1

Dentro da div

collinsjws

Oi luxu,
Vi em alguns sites falando sobre este problema com o mojarra 2.1 (Eu uso Netbeans). Parece que é bug desta versão mesmo. Vou testar. Valeu pela dica.

collinsjws

caputojf1,
Já havia testado com o <h:form> dentro da Div…sem sucesso. De qualquer forma, valeu pela dica. Vou continuar tentando.

leandro.carvalho

Estava com o mesmo problema.

Com a versao 2.0.4 do Mojarra funcionou perfeitamente.

collinsjws

De fato, ao utilizar o mojarra 2.0.4 o problema é resolvido.

Valeu pela ajuda de todos.

E

Só para deixar registrado no tópico, para quem deseja cotinuar com o 2.1+ em vez de voltar ao 2.0.4 é só mudar no xml :

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param>

para

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Production</param-value> </context-param>

caarlos0

Belíssima solução: Assim para de dar a mensagem de erro, e o problema continua ali… LINDO… ¬¬

edudebom:
Só para deixar registrado no tópico, para quem deseja cotinuar com o 2.1+ em vez de voltar ao 2.0.4 é só mudar no xml :

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param>

para

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Production</param-value> </context-param>

wellingtonjmv

Cara obrigado pelo Post. Resolveu meu problema.

dieego_

A versão 2.1.4 (Atual) resolveu o problema.

E detalhe: nem precisa mudar de Development para Production… uashuhasuhsa

collinsjws

Opa! Bom saber disso. Valeu pela informação.

alandiniz

Desculpa “ressucita” o tópico + eu to precisando de uma ajuda…

como eu faço pra troca a versão do mojarra?

outra coisa, com a versão nova do NetBeans 7.1 será que esse bug foi corrijido?

tumvoodoo

dieego_:
A versão 2.1.4 (Atual) resolveu o problema.

E detalhe: nem precisa mudar de Development para Production… uashuhasuhsa

Vlw, resolvido !

E

edudebom:
Só para deixar registrado no tópico, para quem deseja cotinuar com o 2.1+ em vez de voltar ao 2.0.4 é só mudar no xml :

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param>

para

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Production</param-value> </context-param>

funcionou!!!
Tb estava com o mesmo probrema e agora foi resouvido
Valeu!

prog.tiago

Haha

Acabou de acontecer comigo.

Valeu!

moreirawebmaster

elias.ss:
edudebom:
Só para deixar registrado no tópico, para quem deseja cotinuar com o 2.1+ em vez de voltar ao 2.0.4 é só mudar no xml :

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param>

para

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Production</param-value> </context-param>

funcionou!!!
Tb estava com o mesmo probrema e agora foi resouvido
Valeu!

Pra mim também funcionou dessa forma, não vejo problema algum mudar essa tag, já que informa para o jsf trabalhar em ambiente final(produção).

Desculpa ressuscitar tópico, mas tem muita gente que só sabe criticar, valeu pela dica.

Abraços.

Criado 26 de abril de 2011
Ultima resposta 27 de nov. de 2012
Respostas 17
Participantes 13