Problema com o rich:datascroller + rich:modalPanel

Ola a todos,
estou desenvolvendo um sistema de mensagens e encontrei um problema bem chato.
Tenho uma lista de mensagens e cada mensagem abre um modalpanel com o conteudo da mensagem qndo clicada.
Até este ponto, nenhum problema, porem devido a quantidade de mensagens foi implementado um datascroller.
Aparentemente o datascroller esta totalmente funcional. O problema acontece aqui, na primeira pagina o modalpanel exibe as informações da mensagem normalmente, porem quando mudamos de pagina, ao clicar na mensagem, o modalpanel aparece em branco. Achei que o problema poderia estar na hora de pegar o objeto ta tabela, porem, ao debugar, observei que o objeto esta sendo pego corretamente. Neste ponto cheguei a conclusão que o problema pode estar no modalpanel.

Alguem poderia me ajudar com este problema?

Modalpanel:

[code]<rich:modalPanel id=“modal” height=“100” width=“100”
resizeable=“false” moveable=“true”>

	<h:panelGrid>
		<h:outputText value="#{msgs.textoMsg }" style="font-weight: bold" />
		<h:inputTextarea cols="45" rows="10" style="overflow:scroll"
			readonly="true" value="#{meuBean.objeto.mensagem}" />
	</h:panelGrid>

	<a4j:commandButton value="Ok" reRender="pnlAviso, tblInicioMsg"
		onclick="javascript: Richfaces.hideModalPanel(modal');" />

</rich:modalPanel>[/code]

minha tabela.

               <rich:datascroller align="center" for="tblInicioMsg" maxPages="20"
	                  id="datascroller "  />
	 	<rich:dataTable align="center" value="#{meuBean.lista}" 
			var="aviso" width="400" binding="#{meuBean.table}"
			rowClasses="tableRow" id="tblInicioMsg" rows="10">
			<rich:column id="cav1">
				<f:facet name="header">
					<h:outputText value="#{msgs.titulo}" />
				</f:facet>
				<a4j:commandLink action="#{meuBean.visualizaMensagem}"
					reRender="pnlAviso" value="#{aviso.titulo}" styleClass="hyperLink"
					oncomplete="javascript:Richfaces.showModalPanel('pnlAviso',{left:'auto', top:'auto', width:'400px', height:'auto' })">
				</a4j:commandLink>

			</rich:column>
		</rich:dataTable>

Como disse antes, creio que não há necessidade de postar o bean pois ele, creio que, esta trabalhando corretamente

Obrigado desde já

Alguem teria algo a acrescentar ou sugerir?

Eu costumo fazer tabela no rich assim:

não uso dessa forma:

oncomplete="javascript:Richfaces.showModalPanel('pnlAviso',{left:'auto', top:'auto', width:'400px', height:'auto' })">

uso dessa forma:

oncomplete="#{rich:component('pnlAviso')}.show()"
 <rich:dataTable align="center" value="#{meuBean.lista}"   
     var="aviso" width="400" binding="#{meuBean.table}"  
     rowClasses="tableRow" id="tblInicioMsg" rows="10">  

     <rich:column id="cav1">
         <f:facet name="header">
            <h:outputText value="Nome da coluna" />
         </f:facet>   
     </rich:column>
     <h:column>
         <a4j:commandLink ajaxSingle="true" id="idComponente" oncomplete="#{rich:component('pnlAviso')}.show()" reRender="pnlAviso">
         <h:outputText value="#{aviso.nomeAtributo}" />
         <f:setPropertyActionListener value="#{aviso}" target="#{msgs.objetoOndeSeraInseridoValue}" />
         </a4j:commandLink>
     </h:column>
 </rich:dataTable> 

agora é só adaptar para seu código.

qualquer dúvida. posso mostrar um exemplo mais completo e mais detalhado.

Boa tarde a todos,

Obrigado gerdan pela dica, eu estou utilizando agora o metodo que você apresentou, porem meu problema era que eu estava igualando a “null” meu objeto qndo estava setando a tabela, mas isso agora foi resolvido.

Entretando, apensar de achar que problema havia sido resolvido, me deparei com um grande problema, o modalPanel nao era exibido no Internet Explorer. =@

Depois de muito pesquisar consegui mostra-lo no IE.
Entretando o a4j:commandLink não funciona muito bem no IE, atributo “action” não funciona corretamente e não chama o metodo desejado. Desta forma o modal panel funcionava corretamente no FF mas nao exibia os valores no IE.

Novamente fui buscar novas possibilidades. Então comecei a usar o a4j:support no a4j:commandLink pois assim o metodo do bean era chamado. Enfim fiquei feliz, mas como a alegria de aprendiz de programador dura pouco, os valores estavam sendo mostrados, mas o panel mostrava sempre uma requisição anterios mesmo colocando no suporte pra dar rerender oncomplete.

Com isso, tentei uma nova forma de manipular os valores da tabela atravéz do a4j:actionparam que setava uma variavel de controle de linha da tabela. Mas como a vida é uma caixinha de surpresas, isso tambem não foi o suficiente. Uma vez ele fazia certo outra vez ele pegava a requisição do objeto anterior. Ainda não estava bom. Com isso apos mexer bastante cheguei a esta solição.

O modalPanel ficou igual ao anterior.

Botão para exibir o modalPanel

<a4j:commandLink value="#{objTable.titulo}" styleClass="hyperLink"> <a4j:support event="onclick" reRender="pnlAviso" oncomplete="#{rich:component('pnlModal')}.show()"> <a4j:actionparam name="nEtapa" value="#{objTable.id}" assignTo="#{meuBean.linha}" /> </a4j:support> </a4j:commandLink>

função linha da classe meuBean

public void setLinha(int linha) { this.linha = linha; System.out.println(linha); funçãoSetObj(); }

Função funçãoSetObj da classe meuBean

[code]public void visualizaMensagem() {

//varendo a lista de nome "Objetos"
	for (Objeto o : objetos) {
	if (o.getId() == linha) {
		obj = o;
		break;
	}
}

}[/code]

Eu sei que não ficou a coisa mais linda do mundo, mas para mim resolveu, se alguem tiver com o mesmo problema com os navegadores, isso poderá ajudar.

e se alguem souber de uma maneira mais bonita de resolver isso, por favor post

Abraços

Tenho o mesmo problema, no meu caso um botão pra apagar a linha do pedido de abono

Fiz de forma simples (entenda-se, tinha pouco tempo quando implementei), e coloquei toda a função dentro do rich:column

                                         <rich:column style="text-align:center">
                                            <f:facet name="header">
                                                <h:outputText value="NEGAR"/>
                                            </f:facet>
                                            <h:outputLink  value="#" id="link">
                                                <center>
                                                    <h:graphicImage  value="../images/negado.png" style="border:0"/>
                                                    <rich:componentControl for="negarPanel" attachTo="link" operation="show" event="onclick"/>
                                                </center>
                                            </h:outputLink>
                                            
                                            <center>
                                                <rich:modalPanel id="negarPanel" width="330" height="190">
                                                    <f:facet name="header">
                                                        <h:panelGroup>
                                                            <h:outputText value="NEGAR"></h:outputText>
                                                        </h:panelGroup>
                                                    </f:facet>
                                                    <f:facet name="controls">
                                                        <h:panelGroup>
                                                            <h:graphicImage value="/images/close.gif" styleClass="hidelink" id="hidelink"/>
                                                            <rich:componentControl for="panel" attachTo="hidelink" operation="hide" event="onclick"/>
                                                        </h:panelGroup>
                                                    </f:facet>
                                                    <center>
                                                        <h:outputText value="Digite uma justificativa: "/>
                                                        <h:inputTextarea onkeydown="limitText(this,200);" onkeyup="limitText(this,200);"
                                                                         rows="4" cols="45" value="#{solicitacaoAbono.respostaJustificativa}" />

                                                        <br/>
                                                        <br/>
                                                        <h:commandButton value="Enviar" type="submit" id="enviar" action="#{solicitacaoAbono.negar}">
                                                            <rich:componentControl for="panel" attachTo="enviar" operation="hide" event="onclick"/>
                                                        </h:commandButton>
                                                    </center>
                                                </rich:modalPanel>
                                            </center>

                                        </rich:column>
<rich:datascroller align="center" for="tableSolicitacoesAbono" maxPages="20"
                                                       page="1" id="sc2"
                                                       renderIfSinglePage="false"/>

mesma coisa, quando mudo a pagina no scroll, o botão h:outputLink negar nem me dá a opção de ser clickado