[Resolvido] Ajuda com jsf

Olá, editando meu template jsf com primefaces, estou tentando trocar o menu do mesmo.
mas ao tentar trocar esse menu:


<h:form>
						  <p:menu style="width: 200px">
							<p:submenu label="Menu">
								<p:menuitem value="Cadastro de funcionarios" icon="ui-icon-key" />
								<p:menuitem value="Cadastro  de clientes" icon="ui-icon-contact" />
								<p:menuitem value="Cadastro de  Fornecedores" icon="ui-icon-contact" />
								<p:menuitem value="Cadastro de  cartões" icon="ui-icon-contact" />
								<p:menuitem value="Cadastro de bancos" icon="ui-icon-contact" />
								
							</p:submenu>
						</p:menu>
					</h:form>

por esse :
http://www.primefaces.org/showcase/ui/panelMenu.jsf

mas da isso ao rodar a pagina :
java.lang.NullPointerException

tentei trocar os beans, por um bean qualquer que tenho na minha aplicação, mas sem sucesso.

Onde o null pointer é disparado? Qual o stackTrace completo?

ele lança no navegador somente isso.

Poste o stacktrace completo por favor.
Poste o código da página jsp completo por favor.

Você importou o .jar do Primefaces?
Declarou os componentes que está usando?

Obrigado!

Todo template:

[code]

<link rel="stylesheet" href="../css/style2.css" />

<h:head>

Meu Sistema

body {
background-color: #eeeeee;
font-size: 12px
}

</h:head>
<h:body>


<p:layout id =“layout”>
<p:layoutUnit position=“north” size=“100”>
<h:graphicImage url="…/images/pics01.jpg" />
</p:layoutUnit>
		<p:layoutUnit position="west" size="220">
			<ui:insert name="menu">
				<h:form>
					  <p:menu style="width: 200px">
						<p:submenu label="Menu">
							<p:menuitem value="Cadastro de funcionarios" icon="ui-icon-key" />
							<p:menuitem value="Cadastro  de clientes" icon="ui-icon-contact" />
							<p:menuitem value="Cadastro de  Fornecedores" icon="ui-icon-contact" />
							<p:menuitem value="Cadastro de  cartões" icon="ui-icon-contact" />
							<p:menuitem value="Cadastro de bancos" icon="ui-icon-contact" />
							
						</p:submenu>
					</p:menu>
				</h:form>
			</ui:insert>
		</p:layoutUnit>
		<p:layoutUnit position="center">
			<ui:insert name="centro">
                    O que estiver aqui será substituido!
                </ui:insert>
		</p:layoutUnit>
	</p:layout>
</div>

</h:body>

[/code]

Ja esta tudo funcionando, so ao trocar o menu por aquele que falei da erro

Stack Trace:

[quote]java.lang.NullPointerException
at org.primefaces.renderkit.OutcomeTargetRenderer.getTargetURL(OutcomeTargetRenderer.java:95)
at org.primefaces.component.menu.BaseMenuRenderer.encodeMenuItem(BaseMenuRenderer.java:78)
at org.primefaces.component.panelmenu.PanelMenuRenderer.encodeRootSubmenu(PanelMenuRenderer.java:118)
at org.primefaces.component.panelmenu.PanelMenuRenderer.encodeMarkup(PanelMenuRenderer.java:64)
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:39)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

[code]

O erro está aqui

<p:menuitem value="Mobile" outcome="/mobile/index" icon="ui-icon-signal"/>  

outcome representa a regra de navegação, como você não tem essa regra mapeada dá erro.

Teste assim

<p:menuitem value="Mobile"  icon="ui-icon-signal"/>  

[quote=asousaj]O erro está aqui

<p:menuitem value="Mobile" outcome="/mobile/index" icon="ui-icon-signal"/>  

outcome representa a regra de navegação, como você não tem essa regra mapeada dá erro.

Teste assim

<p:menuitem value="Mobile"  icon="ui-icon-signal"/>  

Tiro e queda, funcionou!, você é o cara! valeu

hahaha, sou “o cara” não.

Também estou aprendendo.

Aproveitando o topico, outra duvida com jsf.
peguei um form em jsf, mas os campos sempre ficam centralizados.

vejam:


  <h:form id="form">  
      
    <p:panel header="Cadastro de Clientes">  
          
        <h:panelGrid id="grid" columns="2" style="margin-bottom:10px">  
            <f:facet name="header">  
                <p:messages />  
            </f:facet>  
          
            <h:outputLabel for="firstname" value="Nome:" />  
            <p:inputText id="firstname"   
                        value="aaaa" />  
            <h:outputLabel for="surname" value="Cpf: *" />  
            <p:inputText id="cpf"   
                        value="cpf" required="true"   
                        requiredMessage="false"/> 
                         <h:outputLabel for="Email" value="Email:" />
...

Mas vai sempre jogando centralizado, queria lado a lado, e esta na parte central do meu template, queria q os campos começassem do lado e não no meio.
e outra os nomes esta com um espaço longo ate os campos, como faço esses reajustes?

Cara olha na estrutura de sua página se não tem algo do tipo

<div align="center" >  

Qualquer coisa posta a página completa.

não, a unica coisa q tem “center” é a configuração do meu template
<p:layoutUnit position=“center”>

mas isso não refere ao meu form.

ah cara é mesmo, não tinha. mas eu criei agora e vou definir no css.
mas como eu faço para o segundo campo começar do lado?

Tente colocar o f:facet fora do panelGrid. Veja se resolve.


<h:form id="form">  
      
    <p:panel header="Cadastro de Clientes">  
        <f:facet name="header">  
            <p:messages />  
        </f:facet>  

        <h:panelGrid id="grid" columns="2" style="margin-bottom:10px">  
            <h:outputLabel for="firstname" value="Nome:" />  
            <p:inputText id="firstname"   
                        value="aaaa" />  
            <h:outputLabel for="surname" value="Cpf: *" />  
            <p:inputText id="cpf"   
                        value="cpf" required="true"   
                        requiredMessage="false"/> 
                         <h:outputLabel for="Email" value="Email:" />

Não funcionou ;x

[quote=asousaj]
Qualquer coisa posta a página completa.[/quote]

Nem sempre a causa é no ponto mostrado.
Com toda a página fica mais fácil.
Se tiver usando template poste ele também.

Pagina cadastro:


<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.org/ui"
	xmlns:f="http://java.sun.com/jsf/core">
	<link rel="stylesheet" href="../css/style2.css" />
<ui:decorate template="/templates/padrao.xhtml">
	<ui:define name="centro">
		<div align="left" >
			<h:form id="form">

				<p:panel header="Cadastro de Clientes">
<f:facet name="header">
							<p:messages />
						</f:facet>
					<h:panelGrid id="grid" columns="2" style="margin-bottom:10px">
						

						<h:outputLabel for="firstname" value="Nome:" />
						<p:inputText id="firstname" value="aaaa" />
						<h:outputLabel for="surname" value="Cpf: *" />
						<p:inputText id="cpf" value="cpf" required="true"
							requiredMessage="false" />
						<h:outputLabel for="Email" value="Email:" />
						<p:inputText id="email" value="aaaaa" />
						<h:outputLabel for="Cidade" value="Cidade:" />
						<p:inputText id="cidade" value="Cidade" />
						<h:outputLabel for="Estado" value="Estado:" />
						<p:inputText id="Estado" value="aaaaa" />

						<h:outputLabel for="fone" value="Telefone:" />
						<p:inputText id="Fone" value="999" />
						<h:outputLabel for="fone" value="Celular:" />
						<p:inputText id="cel" value="77779" />


						<p:commandButton id="btn" value="Acessar" update="panel"
							ajax="false" action="#{NavegacaoController.menuPrincipal}" />
					</h:panelGrid>

				</p:panel>

			</h:form>
		</div>
	</ui:define>
</ui:decorate>
</html>

Template:

[code]

<link rel="stylesheet" href="../css/style2.css" />

<h:head>

Meu Sistema

body {
background-color: #eeeeee;
font-size: 12px
}

</h:head>
<h:body>


<p:layout id =“layout”>
<p:layoutUnit position=“north” size=“100”>
<h:graphicImage url="…/images/pics01.jpg" />
</p:layoutUnit>
		<p:layoutUnit position="west" size="220">
			<ui:insert name="menu">
				<h:form>  
          
<p:growl id="messages" autoUpdate="true"/>  

<p:panelMenu style="width:200px">  
    <p:submenu label="Financeiro">  
        <p:menuitem value="Cadastro de Clientes" ajax = "false" action ="#{NavegacaoController.cadCliente}" icon="ui-icon-disk" />  
        <p:menuitem value="Cadastro de Fornecedor" actionListener="#{buttonBean.update}"  icon="ui-icon-arrowrefresh-1-w" />  
    </p:submenu>  
    <p:submenu label="Tesouraria">  
        <p:menuitem value="Delete" actionListener="#{buttonBean.delete}"  ajax="false" icon="ui-icon-close"/>  
    </p:submenu>  
    <p:separator />  
    <p:submenu label="Estoque" >  
        <p:submenu label="Links" icon="ui-icon-extlink">  
            <p:submenu label="PrimeFaces" icon="ui-icon-heart">  
                <p:menuitem value="Home" url="http://www.primefaces.org" icon="ui-icon-home" />  
                <p:menuitem value="Docs" url="http://www.primefaces.org/documentation.html" icon="ui-icon-document" />  
                <p:menuitem value="Download" url="http://www.primefaces.org/downloads.html" icon="ui-icon-arrowthick-1-s" />  
                <p:menuitem value="Support" url="http://www.primefaces.org/support.html" icon="ui-icon-wrench" />  
            </p:submenu>  
        </p:submenu>  
       <p:menuitem value="Mobile"  icon="ui-icon-signal"/>    
    </p:submenu>  
</p:panelMenu>  

</h:form>

			</ui:insert>
		</p:layoutUnit>
		<p:layoutUnit position="center">
			<ui:insert name="centro">
                    O que estiver aqui será substituido!
                </ui:insert>
		</p:layoutUnit>
	</p:layout>
</div>

</h:body>

[/code]

Se entendi corretamente, a reclamação é que os inputTexts estão afastados dos outputLabels.

Na página “cadastro.xhtml” deixe o botão fora do panelGrid, pois ele é que está deixando a primeira coluna mais larga.
Lembre que o panelGrid gera uma

.

<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.org/ui"
	xmlns:f="http://java.sun.com/jsf/core">
<link rel="stylesheet" href="../css/style2.css" />
<ui:decorate template="/templates/padrao.xhtml">
	<ui:define name="centro">
		<div align="left">
			<h:form id="form">

				<p:panel header="Cadastro de Clientes">
					<f:facet name="header">
						<p:messages />
					</f:facet>
					<h:panelGrid id="grid" columns="2" style="margin-bottom:10px">


						<h:outputLabel for="firstname" value="Nome:" />
						<p:inputText id="firstname" value="aaaa" />
						<h:outputLabel for="surname" value="Cpf: *" />
						<p:inputText id="cpf" value="cpf" required="true"
							requiredMessage="false" />
						<h:outputLabel for="Email" value="Email:" />
						<p:inputText id="email" value="aaaaa" />
						<h:outputLabel for="Cidade" value="Cidade:" />
						<p:inputText id="cidade" value="Cidade" />
						<h:outputLabel for="Estado" value="Estado:" />
						<p:inputText id="Estado" value="aaaaa" />

						<h:outputLabel for="fone" value="Telefone:" />
						<p:inputText id="Fone" value="999" />
						<h:outputLabel for="fone" value="Celular:" />
						<p:inputText id="cel" value="77779" />


					</h:panelGrid>
					<p:commandButton id="btn" value="Acessar" update="panel"
						ajax="false" action="#{NavegacaoController.menuPrincipal}" />

				</p:panel>

			</h:form>
		</div>
	</ui:define>
</ui:decorate>
</html>

[quote=asousaj]Se entendi corretamente, a reclamação é que os inputTexts estão afastados dos outputLabels.
[/quote]
sim, e resolveu com sua dica, valeu.
mas eu perguntei outra coisa tambem, como colocar um componente do lado do outro.
exemplo a partir do 3 input, quero colocar ao lado?

[quote=adam_sandler]
exemplo a partir do 3 input, quero colocar ao lado?[/quote]

Explique melhor.

Então quer Cidade,Estado,Telefone e Celular tudo numa linha só?