2012-01-02 40 views
6

Trên trang của tôi, tôi có một nút mở danh sách các mục trong cửa sổ bật lên. Khi tôi chọn 1 mục trong danh sách, tôi muốn chuyển id của mục đó đến phần sao lưu của trang đầu tiên của tôi. Có thể không? Nó đã cố gắng để làm điều đó với a4j:jsFunctiona4j:param nhưng nó không hoạt động.Cách chuyển giá trị tham số đến a4j: jsFunction

Đây là mã của tôi:

trang 1:

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

popuppage:

<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> 

Và đây là mã đậu ủng hộ cho trang đầu tiên

private Integer newGuarantorId; 
public void setNewGuarantor() { 
    guarantor = newGuarantorId; 
} 

public Integer getNewGuarantorId() { 
    return newGuarantorId; 
} 

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

Khi chọn trong cửa sổ bật lên, phương thức trong sao lưu của tôi được gọi, nhưng newGuarantorId là không và setNewGuarantorId không bao giờ được gọi.

Có giải pháp cho vấn đề của tôi không?

+0

Bạn có chắc chắn '# {applicant.deposit_id}' không phải là rỗng trong cửa sổ mới không? – Nikhil

+0

có nó được điền bằng id chính xác. – roel

+0

Hmm .. thats lạ, không có gì có vẻ sai..Không phải là câu trả lời cho câu hỏi của bạn nhưng hãy thử cách này - thay vì gán giá trị cho 'guarantorId', giữ tham số là' ' và trong phương thức 'actionListener' lấy tham số' param1' này từ yêu cầu là 'String param1 = FacesContext.getCurrentInstance(). getExternalContext(). getRequestParameterMap(). get (" param1 ");'. Và sau đó chuyển đổi param này thành 'int' và sử dụng nó thêm. Cần làm việc. – Nikhil

Trả lời

5

Hmm .. thats lạ, không có gì trông wrong..Not một câu trả lời cho câu hỏi của bạn, nhưng cố gắng workaround này - thay vì gán các giá trị cho guarantorId, giữ param như <a4j:param name="param1"/> và trong phương pháp actionListener lấy param1 này từ yêu cầu là String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("param1");. Và sau đó chuyển đổi param này để int và sử dụng nó hơn nữa. Điều đó sẽ hoạt động

1

Tôi nghĩ bạn có thể thử điều này:

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

Và trong đậu Managed của bạn, xác định các phương pháp setNewGuarantor như sau:

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

Hãy thử chuyển đổi actionListener-action:

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

Dưới đây là đề nghị đọc về chủ đề: a4j:jsFunction

Các vấn đề liên quan