2013-02-19 2 views
-1

그래서 동료의 코드를 편집해야하지만 데이터가 존재하지 않을 때 패널이 숨겨 지도록 조정하는 방법을 파악할 수 없습니다. 현재 데이터가 없으면 null을 반환합니다. 고객이 사용할 수있는 정보가 있으면 전체 정보를 표시합니다. 그렇지 않은 경우 패널을 숨기려고합니다. 이것은 또한 사이트 전체에서 사용되는 재사용 패널입니다. 이 작품을 만들기 위해 무엇을 조정해야합니까?Wicket Panel을 숨기려면 어떻게해야합니까?

@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

답변

3

재정 onConfigure 당신은 아마 같은 것을 수행 할 수 있습니다

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

setVisible()을 사용하여 설정 한 값을 무시하고 구성 요소가 isVisible() 메서드를 재정의 할 수 있으므로 setVisibilityAllowed를 사용해야합니다. – RobAu

+0

내가 필요한 것 – Andrea

관련 문제