2012-01-02 16 views
6

Sayfamda, bir pencerede açılan öğelerin listesini açan bir düğme var. Listede 1 öğe seçtiğimde, öğenin kimliğini ilk sayfamın arka planına geçirmek istiyorum. Mümkün mü? a4j:jsFunction ve a4j:param ile yapmaya çalıştı ancak işe yaramıyor.Parametre değeri a4j'ye nasıl geçilir: jsFunction

sayfa 1:

<a4j:jsFunction name="renderGuarantor" render="guarantor" actionListener="#{prospectDetail.setNewGuarantor}"> 
    <a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}" /> 
</a4j:jsFunction> 

popuppage:

Bu

benim kodudur

<h:outputLink value="" onclick="window.opener.renderGuarantor(#{applicant.deposit_id});window.close();"> 
    <h:graphicImage style="padding:0 1px; border:0" value="${path.staticRootUrl}images/confirm.gif" alt="${msg.applicantslist_select}" title="${msg.applicantslist_select}"/> 
</h:outputLink> 

Ve bu ilk sayfa

için destek fasulye kodudur
private Integer newGuarantorId; 
public void setNewGuarantor() { 
    guarantor = newGuarantorId; 
} 

public Integer getNewGuarantorId() { 
    return newGuarantorId; 
} 

public void setNewGuarantorId(Integer newGuarantorId) { 
    this.newGuarantorId = newGuarantorId; 
} 

Açılır pencerede seçim yaparken, backingean'ımdaki yöntem çağrılır, ancak newGuarantorId boştur ve setNewGuarantorId hiçbir zaman çağrılmaz.

Sorunumun bir çözümü var mı?

<a4j:jsFunction name="renderGuarantor" render="guarantor" 
       actionListener="#{prospectDetail.setNewGuarantor(prospectDetail.newGuarantorId)}" /> 

Ve Yönetilen fasulye

, şöyle setNewGuarantor yöntemi tanımlamak:

+0

'da çalışmalıdır. Yeni pencerede # {Applic.deposit_id} 'null olmadığından emin misiniz? – Nikhil

+0

evet, doğru kimlikle doldurulur. – roel

+0

Hmm .. thats garip, hiçbir şey yanlış görünüyor ... Sorunuza bir cevap değil ama bu geçici çözümü deneyin - "guarantorId" değerini atamak yerine, param ' 'olarak tutun. ve 'actionListener' yönteminde bu 'param1' isteğinden 'String param1 = FacesContext.getCurrentInstance(). getExternalContext(). getRequestParameterMap(). get ("param1"); '. Ve sonra bu paramiti “int” olarak değiştirin ve daha fazlasını kullanın. Bu işe yaramalı. – Nikhil

cevap

5

Hmm .., hiçbir şey Sorunuzun cevabı ancak bu geçici çözümü deneyin wrong..Not görünüyor garip şu - yerine guarantorId değer atama <a4j:param name="param1"/> olarak param tutmak ve actionListener yöntemde bu param1 almak String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("param1"); olarak iste. Ve sonra bu paramı int'ye dönüştür ve daha fazla kullan. Bu

1

Bunu deneyebilirsiniz düşünüyorum

public void setNewGuarantor(int newGuarantorId) { 
    guarantor = newGuarantorId; 
} 
3

actionListener den action geçmeyi deneyin:

<a4j:jsFunction name="renderGuarantor" render="guarantor" action="#{prospectDetail.setNewGuarantor}"> 
    <a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}"/> 
</a4j:jsFunction> 

Burada konuyla ilgili okuma yapılması önerilir: a4j:jsFunction

İlgili konular