【问题标题】:How do I make a Wicket Panel hidden?如何隐藏检票面板?
【发布时间】:2013-02-19 23:38:06
【问题描述】:

所以我必须编辑同事的代码,但我似乎无法弄清楚如何调整它,以便在没有数据存在时隐藏面板。当前,当没有数据存在时,它返回 null。如果有客户可用的信息,它会显示他们的完整信息。如果没有,我想让面板隐藏。这也是整个站点使用的可重复使用的面板。我需要进行哪些调整才能使其正常工作?

@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));

}

【问题讨论】:

  • 用您已经尝试过的内容更新您的问题。

标签: java wicket panel


【解决方案1】:

覆盖 onConfigure 并且您可能可以执行以下操作:

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

【讨论】:

  • 您需要使用 setVisibilityAllowed,因为组件可能会覆盖 isVisible() 方法,忽略您使用 setVisible() 设置的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
相关资源
最近更新 更多