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 >
<h:outputLabel value="Site Desenvolvido pelo Corpo Técnico da © Todos os Direitos Reservados"
styleClass="campoBranco"/>
</p>
</div>
</div>
</h:body>
</html>
Agradeço desde já quem puder me dizer como resolver este problema.
luxu
Abril 26, 2011, 9:12pm
#2
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…
o <p:menu> deve estar dentro da tag <h:form>
Isso resolve o seu problema.
Abs,
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.
caputojf1,
Já havia testado com o <h:form> dentro da Div…sem sucesso. De qualquer forma, valeu pela dica. Vou continuar tentando.
Estava com o mesmo problema.
Com a versao 2.0.4 do Mojarra funcionou perfeitamente.
De fato, ao utilizar o mojarra 2.0.4 o problema é resolvido.
Valeu pela ajuda de todos.
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>
Belíssima solução: Assim para de dar a mensagem de erro, e o problema continua ali… LINDO… ¬¬
[quote=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>
[/quote]
Cara obrigado pelo Post. Resolveu meu problema.
dieego_
Dezembro 19, 2011, 9:59pm
#12
A versão 2.1.4 (Atual) resolveu o problema.
E detalhe: nem precisa mudar de Development para Production… uashuhasuhsa
Opa! Bom saber disso. Valeu pela informação.
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?
[quote=dieego_]A versão 2.1.4 (Atual) resolveu o problema.
E detalhe: nem precisa mudar de Development para Production… uashuhasuhsa[/quote]
Vlw, resolvido !
[quote=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>
[/quote]
funcionou!!!
Tb estava com o mesmo probrema e agora foi resouvido
Valeu!
Haha
Acabou de acontecer comigo.
Valeu!
[quote=elias.ss][quote=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>
[/quote]
funcionou!!!
Tb estava com o mesmo probrema e agora foi resouvido
Valeu![/quote]
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.