Как передать значение параметра в a4j: jsFunction - PullRequest
6 голосов
/ 02 января 2012

На моей странице у меня есть кнопка, которая открывает список элементов во всплывающем окне. Когда я выбираю 1 элемент в списке, я хочу передать идентификатор этого элемента бэк-бину моей первой страницы. Является ли это возможным? Он пытался сделать это с a4j:jsFunction и a4j:param, но это не работает.

Это мой код:

стр. 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>

А это код компонента поддержки для первой страницы

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

public Integer getNewGuarantorId() {
    return newGuarantorId;
}

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

При выборе во всплывающем окне вызывается метод в моем backingbean, но newGuarantorId является нулевым, а setNewGuarantorId никогда не вызывается.

Есть ли решение моей проблемы?

Ответы [ 3 ]

5 голосов
/ 16 января 2012

Хм .. это странно, ничего не выглядит неправильно .. Не ответьте на ваш вопрос, но попробуйте этот обходной путь - вместо присвоения значения guarantorId оставьте параметр равным <a4j:param name="param1"/>, а в методе actionListener получите этот параметр1из запроса как String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("param1");.А затем преобразовать этот параметр в int и использовать его дальше.Это должно работать

4 голосов
/ 02 января 2012

Попробуйте переключиться с actionListener на action:

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

Вот рекомендуемое чтение по теме: a4j: jsFunction

1 голос
/ 02 января 2012

Я думаю, вы можете попробовать это:

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

А в вашем управляемом компоненте определите метод setNewGuarantor следующим образом:

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