Primefaces passar parametro da linha DataTable para ManagerBean(dentro do dialog não funciona)

4 respostas
J

Está acontecendo algo muito estranho.

Eu tenho um Dialog e dentro dele tenho um dataTable
esse dataTable eu tenho um botão que acessar determinado metodo no ManagerBean , mas ao ser clicado ele não funciona, nem faz a chamada do Metodo "alterar"
Mas quando eu tiro o dataTable do Dialog deixando na Página principal, tudo funciona… já não sei o que fazer.

A linha abaixo também não funciona:

<f:setPropertyActionListener value="#{item}" target="#{BEAN.itemSelected}" />  "

Ajax True/False não faz diferença

<h:form>
<p:dialog header="DIALOGO" widgetVar="dialogWithList">
<p:dataTable var="item" id="schedulerSentNoList" value="#{Bean.lazyScheduleModel}" 
				rows="15" paginator="true" lazy="true"  dynamic="true" selectionMode="single" >
              
             <p:column>  
	                <f:facet name="header">  
	                    <h:outputText value="Nome" />  
	                </f:facet>  
            </p:column>
           <p:commandButton ajax="false" title="Alterar" image="ui-icon-pencil" action="#{BEAN.alterar}">
	                	  <f:setPropertyActionListener value="#{item}" target="#{BEAN.itemSelected}" />  
	  </p:commandButton>
</p:dataTable>
</p:dialog>
</h:form>

Se você’s já passaram por isso, por favor me deem uma luz!

Abrs a todos
[]

4 Respostas

R

na hora que vc abre o modal ele já deve vir pooulado?
ou na hora que abrir vc clica em um botão consultado e ele busca todos?

J

Ola redthi,

Sim ele já abre populado quando eu abro o modal.

Eu populo assim que entro na página no método

@PostConstruct
    public void initialize(){
            lazyModel = new LazyDataModel<Item>(){
				public List<Item> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters) {
				   try {
					   arr = Dao.findAll();
					   return arr;
				   } catch (DAOException e) {
		//			   _logger.log(Level.WARNING, e.getMessage(), e.getCause());
					   System.out.println(e.getMessage());
				   }
				   
				   return null;
				}
				
				public int getRowCount() {
					int count = 0;
						count =  Dao.count();
					
					return count;
				}
			};
			lazyModel.setPageSize(10);
			lazyModel.setRowIndex(1);           
    }

Daí quando abro o Modal ele já está populado.

Cara que inbaçado isso!

P

Tente assim :

<p:commandButton ajax="false" title="Alterar" image="ui-icon-pencil" action="#{BEAN.alterar}" process="@this">  
                          <f:setPropertyActionListener value="#{item}" target="#{BEAN.itemSelected}" />    
      </p:commandButton>
R

Esse seu botão alterar chama o modal ?
eu não vi essa chamada em seu código, e outra vc está pedindo para popular seu lazy no PostContruct,
acredito que não seria precisso chamar o método, ou seja se vc quer passa um paramêtro que a partir dele
seja carregado sua lista isso não está muito correto, qual escopo vc está utilizando ?

Criado 20 de junho de 2011
Ultima resposta 21 de jun. de 2011
Respostas 4
Participantes 3