@Override
  public void processUpdates(FacesContext context) {
    super.processUpdates(context);

    if (!isRendered() || !isValid()) {
      return;
    }

    javax.el.ValueExpression ve = getValueExpression(SELECTED_LABEL_ATTR);

    if (ve != null && !ve.isReadOnly(context.getELContext())) {
      ve.setValue(context.getELContext(), getSelectedIndex());
      setSelectedIndex(null);
    }
  }
 @Override
 public boolean isReadOnly(EvaluationContext ctx) throws ELException {
   VariableMapper varMapper = ctx.getVariableMapper();
   if (varMapper != null) {
     ValueExpression expr = varMapper.resolveVariable(this.image);
     if (expr != null) {
       return expr.isReadOnly(ctx.getELContext());
     }
   }
   ctx.setPropertyResolved(false);
   boolean result = ctx.getELResolver().isReadOnly(ctx, null, this.image);
   if (!ctx.isPropertyResolved()) {
     throw new PropertyNotFoundException(
         MessageFactory.get("error.resolver.unhandled.null", this.image));
   }
   return result;
 }