JSF - Richfaces: formulário + rich:modalPanel

6 respostas
yorgan

Boa tarde pessoal,
Estou com um problema aqui, tenho um formulário com um h:inputText, um h:selectOneMenu e um a4j:commandButton dentro de um rich:modalPanel que não atuliza os valores dos campos no Bean quando eu submeto o a4j:commandButton.
Se eu utilizo o mesmo formulário fora do rich:modalPanel a coisa funciona 100%.
Alguém já passou por algo parecido?

[]´s

Daniel

6 Respostas

L

Você encontra a resposta nesse tópico http://www.guj.com.br/posts/list/126617.java

yorgan

Obrigado pela ajuda lfpolli, mas no meu caso estou utilizando o jCompany, que no caso cria o form fora da minha JSP e apenas faz um include dela quando aciono o menu.
Com isso, se eu coloco um form dentro do rich:modal, a tela fica com o um form dentro de outro e daí o sistema dispara erro.
Nesse caso teria que ser uma solução sem quebras de forms.

[]´s

Daniel

L

Eu não sei o quanto o jCompany te impede de fazer isso, mas a única maneira de submeter dados a partir de um rich:modalPanel é como eu expliquei no tópico citado:

O modal panel deve ter seu proprio form e a declaracao do modal panel deve estar fora de qualquer outro form. Esta informação está na documentação do Richfaces http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html_single/index.html#rich_modalPanel

Exemplo:

<h:form>
     <!-- form normal da pagina -->
</h:form>

<rich:modalPanel>
    <h:form>
        <!-- form do modal panel -->
    </h:form>
<rich:modalPanel>
juniorsatanas

Pessoal tentei de tudo e nada !

AQUI E PARTE DO OUTRO FORM



        &lt;/h:form&gt;
 &lt;!-- form modal --&gt;


     &lt;rich:modalPanel   id="mp" minHeight="178" minWidth="300" height="210" width="320" zindex="2000"&gt;
             
               
         &lt;a4j:form id="mpform"&gt;
                      
                     &lt;a4j:commandButton style="margin-left: 17%; font-size:12px;" value="Logar" action="#{pessoaMB.login}"/&gt;
                    
           &lt;/a4j:form&gt;
         
        &lt;/rich:modalPanel&gt;  

             &lt;rich:panelMenuItem label="Logar"  onclick="javascript:Richfaces.showModalPanel('mp')"&gt;
                  &lt;a4j:support event="onclick" onsubmit="true"/&gt;
             &lt;/rich:panelMenuItem&gt;
    &lt;/f:view&gt;
&lt;/body&gt;
&lt;/html&gt;

da este erro:

An Error Occurred:
Exception while calling encodeBegin on component : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /pages/cadastroClientef/cadastraClientef.jsp][Class: org.richfaces.component.html.HtmlPanelMenuItem,Id: j_id_jsp_1107764850_212]}

Caused by:
java.lang.NullPointerException - Exception while calling encodeBegin on component : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /pages/cadastroClientef/cadastraClientef.jsp][Class: org.richfaces.component.html.HtmlPanelMenuItem,Id: j_id_jsp_1107764850_212]}

strak trace

Stack Trace

javax.faces.FacesException: Exception while calling encodeBegin on component : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /pages/cadastroClientef/cadastraClientef.jsp][Class: org.richfaces.component.html.HtmlPanelMenuItem,Id: j_id_jsp_1107764850_212]}
	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:599)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:245)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:257)
	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.actuallyRenderView(JspViewHandlerImpl.java:427)
	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:383)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:155)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.gov.nutec.filtro.AuthFilter.doFilter(AuthFilter.java:26)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
	at org.richfaces.renderkit.html.PanelMenuItemRenderer.getFullStyleClass(PanelMenuItemRenderer.java:143)
	at org.richfaces.renderkit.html.HtmlPanelMenuItemRenderer.doEncodeBegin(HtmlPanelMenuItemRenderer.java:119)
	at org.richfaces.renderkit.html.HtmlPanelMenuItemRenderer.doEncodeBegin(HtmlPanelMenuItemRenderer.java:106)
	at org.ajax4jsf.renderkit.RendererBase.encodeBegin(RendererBase.java:100)
	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:596)
	... 33 more
L

Esse erro não tem nada a ver com o modal panel.

O erro está relacionado ao panelMenuItem que está no final da página. Se eu não estou enganado um panelMenuItem deve ser filho de um panelMenu

R

Colocar vários forms em uma única página fica um lixo, fora que no FireFox 11 da alguns problemas, o ideal seria ter um único form por pagina, mas como o rich:modal não da pra trabalhar desta maneira optei utilizando JQuery, bem melhor:
http://code.google.com/p/simplemodal/downloads/list

Criado 19 de outubro de 2009
Ultima resposta 22 de mar. de 2012
Respostas 6
Participantes 4