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

17 respostas
C

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

L

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…

C

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

Abs,

C

Dentro da div

C

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.

C

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

L

Estava com o mesmo problema.

Com a versao 2.0.4 do Mojarra funcionou perfeitamente.

C

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>

C

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>

W

Cara obrigado pelo Post. Resolveu meu problema.

D

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

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

C

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

A

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?

T

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!

P

Haha

Acabou de acontecer comigo.

Valeu!

M

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