You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mc...@apache.org on 2009/04/30 21:26:04 UTC
svn commit: r770406 -
/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/component/UIViewParameter.java
Author: mconcini
Date: Thu Apr 30 19:26:04 2009
New Revision: 770406
URL: http://svn.apache.org/viewvc?rev=770406&view=rev
Log:
MYFACES-2221 - Finish TODOs for javax.faces.component.UIViewParameter
Modified:
myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/component/UIViewParameter.java
Modified: myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/component/UIViewParameter.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/component/UIViewParameter.java?rev=770406&r1=770405&r2=770406&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/component/UIViewParameter.java (original)
+++ myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/component/UIViewParameter.java Thu Apr 30 19:26:04 2009
@@ -20,8 +20,11 @@
import java.io.IOException;
+import javax.el.ValueExpression;
import javax.faces.FactoryFinder;
+import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.render.RenderKit;
import javax.faces.render.RenderKitFactory;
@@ -42,7 +45,7 @@
private static final String DELEGATE_FAMILY = UIInput.COMPONENT_FAMILY;
private static final String DELEGATE_RENDERER_TYPE = "javax.faces.Text";
-
+
private static Renderer _delegateRenderer;
private String _name;
@@ -74,16 +77,58 @@
public String getStringValue(FacesContext context)
{
- // TODO: IMPLEMENT HERE
-
- return null;
+ if (getValueExpression ("value") != null) {
+ // Value specified as an expression, so do the conversion.
+
+ return getStringValueFromModel (context);
+ }
+
+ // Otherwise, just return the local value.
+
+ return ((String) this.getLocalValue());
}
public String getStringValueFromModel(FacesContext context) throws ConverterException
{
- // TODO: IMPLEMENT HERE
-
- return null;
+ ValueExpression ve = getValueExpression ("value");
+ Converter converter;
+ Object value;
+
+ if (ve == null) {
+ // No value expression, return null.
+
+ return null;
+ }
+
+ value = ve.getValue (context.getELContext());
+
+ if (value instanceof String) {
+ // No need to convert.
+
+ return ((String) value);
+ }
+
+ converter = getConverter();
+
+ if (converter == null) {
+ if (value == null) {
+ // No converter, no value, return null.
+
+ return null;
+ }
+
+ // See if we can create the converter from the value type.
+
+ converter = context.getApplication().createConverter (value.getClass());
+
+ if (converter == null) {
+ // Only option is to call toString().
+
+ return value.toString();
+ }
+ }
+
+ return converter.getAsString (context, this, value);
}
@Override
@@ -101,7 +146,37 @@
@Override
public void processValidators(FacesContext context)
{
- // TODO: IMPLEMENT HERE
+ if (context == null) {
+ throw new NullPointerException ("context");
+ }
+
+ // If value is null and required is set, validation fails.
+
+ if ((getSubmittedValue() == null) && isRequired()) {
+ FacesMessage message;
+ String required = getRequiredMessage();
+
+ if (required != null) {
+ message = new FacesMessage (FacesMessage.SEVERITY_ERROR, required, required);
+ }
+
+ else {
+ String label = _MessageUtils.getLabel (context, this);
+
+ message = _MessageUtils.getMessage (context, context.getViewRoot().getLocale(),
+ FacesMessage.SEVERITY_ERROR, REQUIRED_MESSAGE_ID, new Object[] { label });
+ }
+
+ setValid (false);
+
+ context.addMessage (getClientId (context), message);
+ context.validationFailed();
+ context.renderResponse();
+
+ return;
+ }
+
+ super.processValidators (context);
}
@Override
@@ -132,7 +207,12 @@
{
super.updateModel(context);
- // TODO: IMPLEMENT HERE
+ // Put name in request map if value is not a value expression, is valid, and local
+ // value was set.
+
+ if ((getValueExpression ("value") == null) && isValid() && isLocalValueSet()) {
+ context.getExternalContext().getRequestMap().put (getName(), getLocalValue());
+ }
}
@Override