2013-02-19 107 views
-1

所以我必須編輯同事的代碼,但我似乎無法弄清楚如何調整它,以便在沒有數據存在時隱藏面板。當前沒有數據時,它返回null。如果客戶有信息可用,則會顯示其完整信息。如果沒有,我想隱藏面板。這也是整個現場使用的可重複使用的面板。我需要做些什麼調整才能完成這項工作?如何隱藏Wicket面板?

@Override 
protected void onInitialize() 
{ 
    // TODO Auto-generated method stub 
    super.onInitialize();   


    if(customer != null) 
    { 
     loadWithCustomer(); 
    } 
    else 
    { 
     loadWithNoCustomer(); 
    } 


} 

@Override 
protected void onBeforeRender() 
{ 
    super.onBeforeRender(); 

    AjaxLink<Void> createOrderLink = makeCreateOrderLink(customer); 

    SkinnyBuSession session = (SkinnyBuSession) Session.get();  
    if(session != null && session.getCustomer() == null) 
     createOrderLink.setEnabled(false); 

    addOrReplace(createOrderLink); 
} 

private void loadWithCustomer() 
{ 
    addOrReplace(new Label("heading", customer.getAccountName())); 


    Contact contact = null; 
    if(customer.getContacts() != null && customer.getContacts().size() > 0) 
    { 
     contact = customer.getContacts().get(0); 
    } 
    else 
    { 
     contact = new Contact();//makeUpJunkContactForNow(); 
     customer.getContacts().add(contact); 
    } 
    Address address = null; 
    if(customer.getAddresses() != null && customer.getAddresses().size() > 0) 
    { 
     address = customer.getAddresses().get(0); 
    } 
    else 
    { 
     address = new Address();//makeUpJunkAddressForNow(); 
     customer.getAddresses().add(address); 
    } 

    String phone = contact.getPhoneNumber() != null ? contact.getPhoneNumber().getNationalNumber() : ""; 
    if (phone != null && phone.length() == 10) 
    { 
     phone = String.format("(%s) %s-%s", phone.substring(0, 3), phone.substring(3, 6),phone.substring(6, 10)); 
    }  

    addOrReplace(new Label("accountName", customer.getAccountName())); 
    addOrReplace(new Label("address1", address.getAddressLine1())); 
    addOrReplace(new Label("address2", address.getAddressLine2())); 
    addOrReplace(new Label("city", address.getCityName() + ",")); 
    addOrReplace(new Label("state", address.getStateCode())); 
    addOrReplace(new Label("postalCode", address.getPostalCode())); 
    addOrReplace(new Label("contactName", contact.getName())); 
    addOrReplace(new Label("email", contact.getEmailAddress())); 
    addOrReplace(new Label("phone", phone));   

} 

private void loadWithNoCustomer() 
{ 
    Label heading = new Label("heading", ""); 
    addOrReplace(heading.setVisible(false)); 

    addOrReplace(new Label("accountName", "").setVisible(false)); 
    addOrReplace(new Label("address1", "").setVisible(false)); 
    addOrReplace(new Label("address2", "").setVisible(false)); 
    addOrReplace(new Label("city", "").setVisible(false)); 
    addOrReplace(new Label("state", "").setVisible(false)); 
    addOrReplace(new Label("postalCode", "").setVisible(false)); 
    addOrReplace(new Label("contactName", "").setVisible(false)); 
    addOrReplace(new Label("email", "").setVisible(false)); 
    addOrReplace(new Label("phone", "").setVisible(false)); 

} 
+0

更新你的問題你已經嘗試過的。 – Jesse 2013-02-20 00:03:39

回答

3

覆蓋onConfigure你也許可以做這樣的事情:

@Override 
protected void onConfigure() { 
    super.onConfigure(); 
    setVisible(customer != null); 
} 
+0

您需要使用setVisibilityAllowed,因爲組件可能會覆蓋isVisible()方法,忽略您使用setVisible()設置的值 – RobAu 2013-02-25 19:58:45

+0

謝謝您爲我所需要的工作 – Andrea 2013-03-01 16:32:01