저는 primefaces-3.4를 사용 중이며 마스터 페이지의 datatable에 선택된 항목의 세부 정보를 표시하는 대화 상자 (세부 정보 페이지)가 있습니다. 내 콩은 @ViewScoped이고 actionListener 메소드에서 나는 세부 사항을 확실히로드하고있다. 마스터 페이지가 표시되면 p : commandButton을 처음 클릭하면 두 번째 클릭시 올바르게 표시되는 대화 상자가 채워지지 않습니다. Chrome 개발자 도구를 사용하여 확인한 결과 비정상적인 현상이 전혀 나타나지 않았습니다. 선택한 항목의 세부 정보 만 UI에 '바인딩'되지 않습니다. 여기 대화 상자에서 datatable이 처음으로 표시되지 않습니다.
여기@PostConstruct
public void init() {
// load credits if there is an account selected...
if (mainBean.getSelectedAccount() != null) {
ArrayList<Credit> cs = loadCredits(mainBean.getSelectedAccount());
setCredits(cs);
mainBean.getSelectedAccount().setCredits(cs);
}
if (this.selectedCredit != null) {
ArrayList<Installation> installations = loadInstallations(selectedCredit);
selectedCredit.setInstallations(installations);
setPaymentAmount(Float.parseFloat(installations.get(installations.size()-1).getAmount()));
}
}
....
//actionListener to select
public String select() {
if (selectedCredit != null) {
ArrayList<Installation> installations = loadInstallations(selectedCredit);
selectedCredit.setInstallations(installations);
}
return null;
}
및 내 XHTML에서 미리보기가
<p:dataTable var="credit" selectionMode="single"
emptyMessage="Kayıt Bulunamadı..."
selection="#{accountBean.selectedCredit}" rowKey="#{credit.id}"
value="#{accountBean.credits}" id="credit_table" paginator="true"
paginatorAlwaysVisible="false" rows="10">
<f:facet name="header">
<small>İlgili krediyi seçtikten sonra "Detay" butonuna
tıklayınız..</small>
</f:facet>
<p:column>
<h:outputText headerText="Kredi ID" value="#{credit.id}" />
</p:column>
<p:column headerText="Kredi Adı">
<h:outputText value="#{credit.name}" />
</p:column>
<p:column headerText="Tutarı">
<h:outputText value="#{credit.total}" />
</p:column>
<f:facet name="footer">
<p:toolbar>
<p:toolbarGroup align="left">
<p:commandButton actionListener="#{accountBean.select}"
icon="ui-icon-search"
update=":productdetailform:product_detail"
oncomplete="kredidetail.show();" value="Detay">
<f:ajax render=":productdetailform:product_detail" />
</p:commandButton>
....
<h:form id="productdetailform">
<p:dialog id="product_detail"
header="#{accountBean.selectedCredit.name}" widgetVar="kredidetail"
modal="true" height="700" width="850">
<div class="row">
<div class="twelve columns">
<ul class="block-grid three-up">
<li><b>Kredi Hesap Adı: </b> <h:inputText readonly="true"
value="#{accountBean.selectedCredit.name}" /></li>
<li><b>Kredi Tutarı: </b> <h:inputText readonly="true"
value="#{accountBean.selectedCredit.total}" /></li>
<li><b>Veriliş Tarihi: </b> <p:calendar readonly="true"
pattern="dd.MM.yyyy" readonlyInput="true" id="loan_date"
value="#{accountBean.selectedCredit.loanDate}" /></li>
<li><b>Ödenen: </b> <h:inputText readonly="true"
value="#{accountBean.selectedCredit.paid}" /></li>
<li><b>Kalan: </b> <h:inputText readonly="true"
value="#{accountBean.selectedCredit.remaining}" /></li>
<li><b>Durumu: </b> <h:outputText value="AKTİF" /></li>
</ul>
</div>
</div>
<div class="row">
<div class="twelve columns">
<p:dataTable var="ins" emptyMessage="Kayıt Bulunamadı..."
value="#{accountBean.selectedCredit.installations}"
id="credit_details_table">
<p:column headerText="Taksit No">
<h:outputText value="#{ins.installationNo}" />
</p:column>
<p:column headerText="Vadesi">
<h:outputText value="#{ins.paymentDue}">
<f:convertDateTime pattern="dd.MM.yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Taksit Tutarı">
<h:outputText value="#{ins.amount}" />
</p:column>
<p:column headerText="Taksit Tutarı">
<h:outputText value="#{ins.paidAmount}" />
</p:column>
<p:column headerText="Ödeme Durumu">
<h:outputText value="#{ins.status}" />
</p:column>
<p:column headerText="Ödeme Tarihi">
<h:outputText value="#{ins.actualDate}" />
</p:column>
</p:dataTable>
</div>
</div>
</p:dialog>
</h:form>
때문에 문제가 실제로 무엇을 내 콩 코드와 XHTML을 무엇입니까?
commandButton이 도구 모음에 중첩되어 있지 않은 경우에도 동일한 문제가 있습니까? – stg
실제로 시도하지 않았고, 의심의 여지가 없습니다 ... 먼저 시도해 봅시다. actionListener가 처음에는 전혀 호출되지 않은 것 같습니다 ... – eax
확실히 actionListener 메서드가 처음에는 호출되지 않았습니다 ... 왜? 나는 몰라. 툴바와 관련이 없습니다 ... – eax