Olá, editando meu template jsf com primefaces, estou tentando trocar o menu do mesmo.
mas ao tentar trocar esse menu:
<h:form><p:menustyle="width: 200px"><p:submenulabel="Menu"><p:menuitemvalue="Cadastro de funcionarios"icon="ui-icon-key"/><p:menuitemvalue="Cadastro de clientes"icon="ui-icon-contact"/><p:menuitemvalue="Cadastro de Fornecedores"icon="ui-icon-contact"/><p:menuitemvalue="Cadastro de cartões"icon="ui-icon-contact"/><p:menuitemvalue="Cadastro de bancos"icon="ui-icon-contact"/></p:submenu></p:menu></h:form>
Onde o null pointer é disparado? Qual o stackTrace completo?
A
adam_sandler
ele lança no navegador somente isso.
C
carlospomari
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!
A
adam_sandler
Todo template:
<htmlxmlns="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"><linkrel="stylesheet"href="../css/style2.css"/><h:head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><title>MeuSistema</title><styletype="text/css">
body{
background-color:#eeeeee;
font-size:12px
}
</style></h:head><h:body><divalign="center"><p:layoutid ="layout"><p:layoutUnitposition="north"size="100"><h:graphicImageurl="../images/pics01.jpg"/></p:layoutUnit><p:layoutUnitposition="west"size="220"><ui:insertname="menu"><h:form><p:menustyle="width: 200px"><p:submenulabel="Menu"><p:menuitemvalue="Cadastro de funcionarios"icon="ui-icon-key"/><p:menuitemvalue="Cadastro de clientes"icon="ui-icon-contact"/><p:menuitemvalue="Cadastro de Fornecedores"icon="ui-icon-contact"/><p:menuitemvalue="Cadastro de cartões"icon="ui-icon-contact"/><p:menuitemvalue="Cadastro de bancos"icon="ui-icon-contact"/></p:submenu></p:menu></h:form></ui:insert></p:layoutUnit><p:layoutUnitposition="center"><ui:insertname="centro">Oqueestiveraquiserásubstituido!
</ui:insert></p:layoutUnit></p:layout></div></h:body></html>
Ja esta tudo funcionando, so ao trocar o menu por aquele que falei da erro
A
adam_sandler
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]
outcome representa a regra de navegação, como você não tem essa regra mapeada dá erro.
Teste assim
<p:menuitemvalue="Mobile"icon="ui-icon-signal"/>
Tiro e queda, funcionou!, você é o cara! valeu
asousaj
hahaha, sou “o cara” não.
Também estou aprendendo.
A
adam_sandler
Aproveitando o topico, outra duvida com jsf.
peguei um form em jsf, mas os campos sempre ficam centralizados.
vejam:
<h:formid="form"><p:panelheader="Cadastro de Clientes"><h:panelGridid="grid"columns="2"style="margin-bottom:10px"><f:facetname="header"><p:messages/></f:facet><h:outputLabelfor="firstname"value="Nome:"/><p:inputTextid="firstname"value="aaaa"/><h:outputLabelfor="surname"value="Cpf: *"/><p:inputTextid="cpf"value="cpf"required="true"requiredMessage="false"/><h:outputLabelfor="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?
asousaj
Cara olha na estrutura de sua página se não tem algo do tipo
<divalign="center">
Qualquer coisa posta a página completa.
A
adam_sandler
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.
A
adam_sandler
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?
asousaj
Tente colocar o f:facet fora do panelGrid. Veja se resolve.
<h:formid="form"><p:panelheader="Cadastro de Clientes"><f:facetname="header"><p:messages/></f:facet><h:panelGridid="grid"columns="2"style="margin-bottom:10px"><h:outputLabelfor="firstname"value="Nome:"/><p:inputTextid="firstname"value="aaaa"/><h:outputLabelfor="surname"value="Cpf: *"/><p:inputTextid="cpf"value="cpf"required="true"requiredMessage="false"/><h:outputLabelfor="Email"value="Email:"/>
A
adam_sandler
Não funcionou ;x
asousaj
asousaj:
Qualquer coisa posta a página completa.
Nem sempre a causa é no ponto mostrado.
Com toda a página fica mais fácil.
Se tiver usando template poste ele também.
A
adam_sandler
Pagina cadastro:
<htmlxmlns="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"><linkrel="stylesheet"href="../css/style2.css"/><ui:decoratetemplate="/templates/padrao.xhtml"><ui:definename="centro"><divalign="left"><h:formid="form"><p:panelheader="Cadastro de Clientes"><f:facetname="header"><p:messages/></f:facet><h:panelGridid="grid"columns="2"style="margin-bottom:10px"><h:outputLabelfor="firstname"value="Nome:"/><p:inputTextid="firstname"value="aaaa"/><h:outputLabelfor="surname"value="Cpf: *"/><p:inputTextid="cpf"value="cpf"required="true"requiredMessage="false"/><h:outputLabelfor="Email"value="Email:"/><p:inputTextid="email"value="aaaaa"/><h:outputLabelfor="Cidade"value="Cidade:"/><p:inputTextid="cidade"value="Cidade"/><h:outputLabelfor="Estado"value="Estado:"/><p:inputTextid="Estado"value="aaaaa"/><h:outputLabelfor="fone"value="Telefone:"/><p:inputTextid="Fone"value="999"/><h:outputLabelfor="fone"value="Celular:"/><p:inputTextid="cel"value="77779"/><p:commandButtonid="btn"value="Acessar"update="panel"ajax="false"action="#{NavegacaoController.menuPrincipal}"/></h:panelGrid></p:panel></h:form></div></ui:define></ui:decorate></html>
Template:
<htmlxmlns="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"><linkrel="stylesheet"href="../css/style2.css"/><h:head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><title>MeuSistema</title><styletype="text/css">body{background-color:#eeeeee;font-size:12px}</style></h:head><h:body><divalign="center"><p:layoutid="layout"><p:layoutUnitposition="north"size="100"><h:graphicImageurl="../images/pics01.jpg"/></p:layoutUnit><p:layoutUnitposition="west"size="220"><ui:insertname="menu"><h:form><p:growlid="messages"autoUpdate="true"/><p:panelMenustyle="width:200px"><p:submenulabel="Financeiro"><p:menuitemvalue="Cadastro de Clientes"ajax="false"action="#{NavegacaoController.cadCliente}"icon="ui-icon-disk"/><p:menuitemvalue="Cadastro de Fornecedor"actionListener="#{buttonBean.update}"icon="ui-icon-arrowrefresh-1-w"/></p:submenu><p:submenulabel="Tesouraria"><p:menuitemvalue="Delete"actionListener="#{buttonBean.delete}"ajax="false"icon="ui-icon-close"/></p:submenu><p:separator/><p:submenulabel="Estoque"><p:submenulabel="Links"icon="ui-icon-extlink"><p:submenulabel="PrimeFaces"icon="ui-icon-heart"><p:menuitemvalue="Home"url="http://www.primefaces.org"icon="ui-icon-home"/><p:menuitemvalue="Docs"url="http://www.primefaces.org/documentation.html"icon="ui-icon-document"/><p:menuitemvalue="Download"url="http://www.primefaces.org/downloads.html"icon="ui-icon-arrowthick-1-s"/><p:menuitemvalue="Support"url="http://www.primefaces.org/support.html"icon="ui-icon-wrench"/></p:submenu></p:submenu><p:menuitemvalue="Mobile"icon="ui-icon-signal"/></p:submenu></p:panelMenu></h:form></ui:insert></p:layoutUnit><p:layoutUnitposition="center"><ui:insertname="centro">Oqueestiveraquiserásubstituido!</ui:insert></p:layoutUnit></p:layout></div></h:body></html>
asousaj
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
.
<htmlxmlns="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"><linkrel="stylesheet"href="../css/style2.css"/><ui:decoratetemplate="/templates/padrao.xhtml"><ui:definename="centro"><divalign="left"><h:formid="form"><p:panelheader="Cadastro de Clientes"><f:facetname="header"><p:messages/></f:facet><h:panelGridid="grid"columns="2"style="margin-bottom:10px"><h:outputLabelfor="firstname"value="Nome:"/><p:inputTextid="firstname"value="aaaa"/><h:outputLabelfor="surname"value="Cpf: *"/><p:inputTextid="cpf"value="cpf"required="true"requiredMessage="false"/><h:outputLabelfor="Email"value="Email:"/><p:inputTextid="email"value="aaaaa"/><h:outputLabelfor="Cidade"value="Cidade:"/><p:inputTextid="cidade"value="Cidade"/><h:outputLabelfor="Estado"value="Estado:"/><p:inputTextid="Estado"value="aaaaa"/><h:outputLabelfor="fone"value="Telefone:"/><p:inputTextid="Fone"value="999"/><h:outputLabelfor="fone"value="Celular:"/><p:inputTextid="cel"value="77779"/></h:panelGrid><p:commandButtonid="btn"value="Acessar"update="panel"ajax="false"action="#{NavegacaoController.menuPrincipal}"/></p:panel></h:form></div></ui:define></ui:decorate></html>
A
adam_sandler
asousaj:
Se entendi corretamente, a reclamação é que os inputTexts estão afastados dos outputLabels.
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?
asousaj
adam_sandler:
exemplo a partir do 3 input, quero colocar ao lado?
Explique melhor.
Então quer Cidade,Estado,Telefone e Celular tudo numa linha só?
A
adam_sandler
isso, na horizontal
asousaj
Cara neste caso eu usaria o panelGrid do primefaces.