⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uiinput.java

📁 RESIN 3.2 最新源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      try {	updateModel(context);      } catch (RuntimeException e) {	context.renderResponse();      	throw e;      }      if (! isValid())	context.renderResponse();    }  }  public void updateModel(FacesContext context)  {    if (! isValid())      return;    if (! isLocalValueSet())      return;    if (_valueExpr == null)      return;    try {      _valueExpr.setValue(context.getELContext(), getLocalValue());      setValue(null);      setLocalValueSet(false);    } catch (RuntimeException e) {      log.log(Level.FINE, e.toString(), e);            setValid(false);            String summary = Util.l10n(context, UPDATE_MESSAGE_ID,				 "{0}: An error occurred while processing your submitted information.",				 Util.getLabel(context, this));      String detail = summary;      FacesMessage msg = new FacesMessage(summary, detail);      context.addMessage(getClientId(context), msg);      // jsf/5011      // if the spec lets us throw this, it's useful for development      throw new FacesException("id=" + getClientId(context)			       + " " + e.toString(), e);    }  }  @Override  public void processValidators(FacesContext context)  {    if (isRendered()) {      super.processValidators(context);      try {	if (! isImmediate())	  validate(context);	if (! isValid())	  context.renderResponse();      } catch (RuntimeException e) {	context.renderResponse();      	throw e;      }    }  }  public void validate(FacesContext context)  {    Object submittedValue = getSubmittedValue();    if (submittedValue == null)      return;    Object value;    try {      value = getConvertedValue(context, submittedValue);      validateValue(context, value);      if (! isValid()) {	context.renderResponse();	return;      }    } catch (ConverterException e) {      log.log(Level.FINE, e.toString(), e);      setValid(false);      context.renderResponse();      final String converterMessage = getConverterMessage();      FacesMessage msg = e.getFacesMessage();      if (msg == null) {	String summary = null;	if (converterMessage != null)	  summary = converterMessage;	else	  summary = Util.l10n(context, CONVERSION_MESSAGE_ID,			      "{0}: Conversion error occurred.",			      Util.getLabel(context, this));	String detail = summary;        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail);      }      else if (converterMessage != null) {	msg.setSummary(converterMessage);	msg.setDetail(converterMessage);      }      context.addMessage(getClientId(context), msg);      return;    }        Object oldValue = getValue();    setValue(value);    setSubmittedValue(null);    if (compareValues(oldValue, value)	&& getFacesListeners(FacesListener.class).length > 0) {      ValueChangeEvent event = new ValueChangeEvent(this, oldValue, value);      broadcast(event);    }  }  protected Object getConvertedValue(FacesContext context,				     Object submittedValue)    throws ConverterException  {    Renderer renderer = getRenderer(context);    if (renderer != null)      return renderer.getConvertedValue(context, this, submittedValue);    else if (submittedValue instanceof String) {      Converter converter = getConverter();      if (converter != null)	return converter.getAsObject(context, this, (String) submittedValue);      if (_valueExpr != null) {	Class type = _valueExpr.getType(context.getELContext());	if (type != null) {	  converter = context.getApplication().createConverter(type);	  if (converter != null) {	    return converter.getAsObject(context,					 this,					 (String) submittedValue);	  }	}      }    }    return submittedValue;  }    protected boolean compareValues(Object oldValue, Object newValue)  {    if (oldValue == newValue)      return false;    else if (oldValue == null || newValue == null)      return true;    else      return ! oldValue.equals(newValue);  }  public void validateValue(FacesContext context, Object value)  {    if (! isValid()) {    }    else if (value != null &&             ! "".equals(value) &&             ! (value.getClass().isArray() &&               java.lang.reflect.Array.getLength(value) == 0)) {      for (Validator validator : getValidators()) {	try {	  validator.validate(context, this, value);	} catch (ValidatorException e) {	  log.log(Level.FINER, e.toString(), e);	  FacesMessage msg = e.getFacesMessage();	  String validatorMessage = getValidatorMessage();	  if (msg == null) {	    final String summary;	    final String detail;	    if (validatorMessage != null) {	      summary = validatorMessage;	      detail = validatorMessage;	    }	    else {	      summary = e.getMessage();	      detail = e.toString();	    }            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,                                   summary,                                   detail);	  }	  else {	    if (validatorMessage != null) {	      msg.setSummary(validatorMessage);	      msg.setDetail(validatorMessage);	    }	  }	  	  context.addMessage(getClientId(context), msg);	  setValid(false);	}      }    }    else if (isRequired()) {      final FacesMessage msg;      String requiredMessage = getRequiredMessage();      if (requiredMessage != null)        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,                               requiredMessage,                               requiredMessage);      else {	String summary = Util.l10n(context,				   REQUIRED_MESSAGE_ID,				   "{0}: UIInput validation Error: Value is required.",				   Util.getLabel(context, this));	String detail = summary;	msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail);      }      context.addMessage(getClientId(context), msg);      setValid(false);      return;    }  }  //  // state  //  public Object saveState(FacesContext context)  {    int offset = 6;        Object []state = new Object[offset + 2 * _validators.length];        state[0] = super.saveState(context);    state[1] = _immediate;    state[2] = _required;    state[3] = _requiredMessage;    state[4] = _converterMessage;    state[5] = _validatorMessage;    if (_validators.length > 0) {      for (int i = 0; i < _validators.length; i++) {	Validator validator = _validators[i];	int index = offset + 2 * i;		state[index] = validator.getClass();	if (validator instanceof StateHolder) {	  StateHolder holder = (StateHolder) validator;	  	  state[index + 1] = holder.saveState(context);	}      }    }    return state;  }  public void restoreState(FacesContext context, Object value)  {    Object []state = (Object []) value;    super.restoreState(context, state[0]);    _immediate = (Boolean) state[1];    _required = (Boolean) state[2];    _requiredMessage = (String) state[3];    _converterMessage = (String) state[4];    _validatorMessage = (String) state[5];        _valueExpr = super.getValueExpression("value");    int offset = 6;    if (offset < state.length) {      _validators = new Validator[(state.length - offset) / 2];      for (int i = 0; i < _validators.length; i++) {	int index = offset + 2 * i;		Class cl = (Class) state[index];	try {	  Validator validator = (Validator) cl.newInstance();	  if (validator instanceof StateHolder) {	    StateHolder holder = (StateHolder) validator;	    holder.restoreState(context, state[index + 1]);	  }	  _validators[i] = validator;	} catch (Exception e) {	  throw new FacesException(e);	}      }    }  }  //  // private helpers  //  private static enum PropEnum {    IMMEDIATE,    REQUIRED,    VALUE,    REQUIRED_MESSAGE,    CONVERTER_MESSAGE,    VALIDATOR_MESSAGE,  }  private static class ValueChangeListenerAdapter    implements ValueChangeListener, StateHolder  {    private MethodBinding _binding;        private boolean _transient;    public ValueChangeListenerAdapter()    {    }    public ValueChangeListenerAdapter(MethodBinding binding)    {      _binding = binding;    }    MethodBinding getBinding()    {      return _binding;    }    public void processValueChange(ValueChangeEvent event)      throws AbortProcessingException    {      FacesContext facesContext = FacesContext.getCurrentInstance();      _binding.invoke(facesContext, new Object[] { event });     }    public Object saveState(FacesContext context)    {      return _binding;    }    public void restoreState(FacesContext context, Object state)    {      _binding = (MethodBinding) state;    }    public boolean isTransient()    {      return _transient;    }    public void setTransient(boolean isTransient)    {      _transient = isTransient;    }    public String toString()    {      return "ValueChangeListenerAdapter[" + _binding + "]";    }  }  private static class ValidatorAdapter    implements Validator, StateHolder  {    private MethodBinding _binding;        private boolean _transient;    public ValidatorAdapter()    {    }    public ValidatorAdapter(MethodBinding binding)    {      _binding = binding;    }    MethodBinding getBinding()    {      return _binding;    }    public void validate(FacesContext context,			 UIComponent component,			 Object value)      throws ValidatorException    {      try {	FacesContext facesContext = FacesContext.getCurrentInstance();	_binding.invoke(facesContext, new Object[] { context, component, value });      } catch (EvaluationException e) {	if (e.getCause() instanceof ValidatorException)	  throw (ValidatorException) e.getCause();	else if (e.getCause() instanceof RuntimeException)	  throw (RuntimeException) e.getCause();	else	  throw e;      }    }    public Object saveState(FacesContext context)    {      return _binding;    }    public void restoreState(FacesContext context, Object state)    {      _binding = (MethodBinding) state;    }    public boolean isTransient()    {      return _transient;    }    public void setTransient(boolean isTransient)    {      _transient = isTransient;    }    public String toString()    {      return "ValueChangeListenerAdapter[" + _binding + "]";    }  }  static {    _propMap.put("value", PropEnum.VALUE);    _propMap.put("immediate", PropEnum.IMMEDIATE);    _propMap.put("required", PropEnum.REQUIRED);    _propMap.put("requiredMessage", PropEnum.REQUIRED_MESSAGE);    _propMap.put("converterMessage", PropEnum.CONVERTER_MESSAGE);    _propMap.put("validatorMessage", PropEnum.VALIDATOR_MESSAGE);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -