Richfaces의 모달 popupPanel을 포함하고있는 JSF 페이지를 가지고 있으며이 popupPanel은 extendedDataTable입니다. 이제 사용자가 새 행을 선택할 때마다 빈에서 사용자 선택을 원합니다. 처음에는 코드를 보여주고 싶습니다. 문제를 설명 할 것입니다. 청취자와 필요한 회원들과 함께 콩을 해당Ajax에없는 popupPanel 내부의 extendedDataTable 선택 요청 매개 변수
<rich:popupPanel id="kontaktPanel" modal="true" onmaskclick="#{rich:component('kontaktPanel')}.hide()">
<rich:extendedDataTable
value="#{nachfrageBean.loadedKontakte}" var="kontakt"
selection="#{nachfrageBean.selection}" id="kontaktTable">
<rich:column>
<f:facet name="header">
<h:outputText value="#{messages['tabelle.kontakt.instknz']}" />
</f:facet>
<h:outputText value="#{kontakt.instKnz}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="#{messages['tabelle.kontakt.name']}" />
</f:facet>
<h:outputText value="#{kontakt.name}" />
</rich:column>
<a4j:ajax execute="kontaktTable kontaktPanel" event="selectionchange" listener="#{nachfrageBean.selectedRecord}" />
</rich:extendedDataTable>
</rich:popupPanel>
가 :
public class NachfrageBean {
private KontaktDTO kontakt;
private List<KontaktDTO> loadedKontakte = new ArrayList<KontaktDTO>();
/** DOCUMENT ME! */
private Collection<Object> selection;
public Collection<Object> getSelection() {
return selection;
}
public void setSelection(Collection<Object> selection) {
this.selection = selection;
}
public List<KontaktDTO> getLoadedKontakte() {
//contacts are successfully loaded
return kontaktBusiness.getAllKontakte();
}
public KontaktDTO getKontakt() {
return kontakt;
}
public void setKontakt(KontaktDTO kontakt) {
this.kontakt = kontakt;
}
public void selectedRecord(AjaxBehaviorEvent event) {
UIExtendedDataTable dataTable = (UIExtendedDataTable)event.getComponent();
Object originalKey = dataTable.getRowKey();
for(Object selectionKey : selection) {
dataTable.setRowKey(selectionKey);
if(dataTable.isRowAvailable()) {
// do something with the selection
}
}
dataTable.setRowKey(originalKey);
}
}
리스너가 성공적으로 할 때 호출되는 popupPanel과 extendedDatatable와 XHTML 페이지의
부 사용자가 데이터 테이블에서 행을 선택하지만 선택 항목이 null이므로 NPE가 표시됩니다. 그리고 popupPanel을 제거하고 내 extendedDatatable을 내 페이지에서 직접 작성하면 올바르게 작동합니다. 나는 항상 요청 매개 변수를 출력하고 pupupPanel 안에 datatable이있을 때 두 개의 누락 된 매개 변수가 있음을 알 수 있습니다. 이 요청 매개 변수는 다음과 같습니다
- mainForm : kontaktTable : WI =
- mainForm : kontaktTable : SI = 3,3 | 3 kontaktTable에서 선택 가져 팝업 외부 그래서 || X
제출되었지만 팝업 패널 내부에는 없습니다. 아무도 여기서 뭐가 잘못 됐는지 아니?