Problema com página JSF

10 respostas
T

Boa tarde pessoas!
Estou criando uma página em JSF de um projeto da empresa, o problema é que ao colocar o projeto para executar, logo na página de login aparece a mensagem:

[color=red]The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.[/color]

Já verifiquei todo o documento e vi que todas as actions estão dentro de um <h:form>

No projeto estou utilizando JSF 2, Spring 3, RichFaces 4…

OBS: Consigo fazer login na aplicação, e até acesso outras páginas, mas não consigo acessar a que estou fazendo no momento.

Agradeço a quem puder ajudar.

10 Respostas

R

mostra o código fonte da página que esta dando o erro.

T

Código abaixo…

<?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">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:a4j="http://richfaces.org/a4j"
                xmlns:rich="http://richfaces.org/rich"
                template="/WEB-INF/templates/freq-menu.xhtml">
    <ui:define name="body">
        <f:metadata>
            <f:event type="preRenderView" listener="#{atestarPage.autorizacao()}" />
        </f:metadata>
        <rich:panel>
            <h:form id="atestarForm">
                <h:panelGrid columns="2" style="border: 0; margin: 0">
                    <rich:panel >
                        <rich:dataTable value="#{atestarPage.usuarios}" var="d" >
                            <f:facet name="header">
                                <rich:column rowspan="2">
                                    <h:outputText value="#{msgs.label_servPendentes}" />
                                </rich:column>
                            </f:facet>
                            <rich:column>
                                <f:facet name="header">
                                    <h:outputText value="#{msgs.label_selecione}" />
                                </f:facet>
                                <h:selectBooleanCheckbox value="#{d}" />
                            </rich:column>
                            <rich:column>
                                <f:facet name="header" >
                                    <a4j:commandLink value="#{msgs.label_classifSetor}" render="table"
                                        action="#{d.servidor.unidadeLotacao.sigla}" />
                                </f:facet> 
                            </rich:column>
                            <rich:column>
                                <f:facet name="header" >
                                        <a4j:commandLink value="#{msgs.label_classifNome}" render="table"
                                                 action="#{d.servidor.nome}" />
                                </f:facet>
                            </rich:column>
                            <rich:column>
                                <f:facet name="header">
                                        <a4j:commandLink value="#{msgs.label_classifSituacao}" render="table"
                                                 action="#{d.servidor}" />
                                </f:facet>
                            </rich:column>
                        </rich:dataTable>
                    </rich:panel>
                </h:panelGrid>
            </h:form>
        </rich:panel>
    </ui:define>
</ui:composition>
R

faz um teste ai

altera os componentes do jsf (h:form , h:panelGrid) e coloca do richfaces .

R

ha tenta colocar isto no tem web.xml

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

vc esta utilizando primefaces tb?

T

No web.xml tá assim:

<context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>${javax.faces.PROJECT_STAGE}</param-value> </context-param>
Que é a mesma configuração que estava funcionando nas outras páginas.

Tenho mesmo que alterar?

E eu vou substituir os componentes do JSF (h:form , h:panelGrid) por quais do Richfaces?

R

a4j:form

rich:panel

marcosharbs

a tag <h:form> deve estar dentro da tag <f:view>

wolmirGarbin

Olá,

é isso mesmo como o marcosharbs falou, todos os componentes devem estar dentro da tag <f:view>

R

mostra ai seu template.

T

Resolvido.

O problema era no meu @ManagedBean, que eu não havia criado o método @PostConstruct.

Valeu galera!

Criado 3 de agosto de 2011
Ultima resposta 10 de ago. de 2011
Respostas 10
Participantes 4