2012-11-09 2 views
1

저는 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을 무엇입니까?

+0

commandButton이 도구 모음에 중첩되어 있지 않은 경우에도 동일한 문제가 있습니까? – stg

+0

실제로 시도하지 않았고, 의심의 여지가 없습니다 ... 먼저 시도해 봅시다. actionListener가 처음에는 전혀 호출되지 않은 것 같습니다 ... – eax

+0

확실히 actionListener 메서드가 처음에는 호출되지 않았습니다 ... 왜? 나는 몰라. 툴바와 관련이 없습니다 ... – eax

답변

0

AFAIK, actionListener 메서드의 서명은 public void actionListener(ActionEvent event)이어야합니다. actionListener 대신 action을 사용해보세요.

또한 데이터 테이블을 둘러싸고있는 양식이 있습니까? 여러 양식을 사용하는 경우 JSF에 버그가있었습니다. 대화 상자 대신 전체 양식을 업데이트하려고 시도하십시오. update=":productdetailform"

+1

이것은 사실이 아닙니다. actionListener 메서드는 ActionEvent 매개 변수 없이는 정상적으로 작동합니다. –

+0

그런데 사실이 아닙니다. 어쨌든 이걸 시도했지만 작동하지 않습니다 ... – eax

관련 문제