public String get(String attribute) {
    String attributeValue =
        ObjectExtractor.extractString(
            getValueExpression(attribute), getFacesContext().getELContext());
    if (attributeValue == null) attributeValue = (String) getAttributes().get(attribute);

    return attributeValue;
  }
  @Override
  public void apply(FaceletContext ctx, UIComponent component)
      throws IOException, FacesException, FaceletException, ELException {
    AutoCompleteSelectItemsBean bean = new AutoCompleteSelectItemsBean();

    if (unlessAttribute != null) {
      if (ObjectExtractor.extractBoolean(
          getValueExpression(unlessAttribute, ctx, Object.class), ctx)) {
        return;
      }
    }

    bean.setColumn(
        ObjectExtractor.extractString(getValueExpression(columnAttribute, ctx, String.class), ctx));
    bean.setJndi(
        ObjectExtractor.extractString(getValueExpression(jndiAttribute, ctx, String.class), ctx));
    bean.setLabel(
        ObjectExtractor.extractString(getValueExpression(labelAttribute, ctx, String.class), ctx));
    bean.setTable(
        ObjectExtractor.extractString(getValueExpression(tableAttribute, ctx, String.class), ctx));

    if (keyAttribute != null)
      bean.setKey(
          ObjectExtractor.extractString(getValueExpression(keyAttribute, ctx, String.class), ctx));

    if (likeAttribute != null)
      bean.setLike(
          ObjectExtractor.extractBoolean(
              getValueExpression(likeAttribute, ctx, Object.class), ctx));

    ValueExpression beanExpression =
        getValueExpression(beanAttribute, ctx, AutoCompleteSelectItemsBean.class);
    beanExpression.setValue(ctx, bean);
  }