Author: dsvyatobatsko
Date: 2008-07-15 10:36:37 -0400 (Tue, 15 Jul 2008)
New Revision: 9613
Modified:
trunk/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java
Log:
UIMessages search is narrowed down to the current form if any
Modified:
trunk/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java
===================================================================
---
trunk/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java 2008-07-15
14:21:35 UTC (rev 9612)
+++
trunk/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java 2008-07-15
14:36:37 UTC (rev 9613)
@@ -17,12 +17,10 @@
import javax.faces.component.UIComponentBase;
import javax.faces.component.UIInput;
import javax.faces.component.UIMessage;
-import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.FacesEvent;
import javax.faces.event.PhaseId;
-import javax.faces.validator.Validator;
import org.ajax4jsf.component.AjaxComponent;
import org.ajax4jsf.component.AjaxContainer;
@@ -31,10 +29,8 @@
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.event.AjaxListener;
-import org.ajax4jsf.renderkit.AjaxContainerRenderer;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.richfaces.event.ValidationEvent;
-import org.richfaces.validator.FacesBeanValidator;
import com.sun.facelets.FaceletException;
@@ -42,12 +38,12 @@
* JSF component class
*
*/
-public abstract class UIBeanValidator extends UIComponentBase implements AjaxComponent,
AjaxSupport,AjaxContainer {
+public abstract class UIBeanValidator extends UIComponentBase implements AjaxComponent,
AjaxSupport, AjaxContainer {
public static final String COMPONENT_TYPE = "org.richfaces.BeanValidator";
public static final String COMPONENT_FAMILY =
"org.richfaces.BeanValidator";
-
+
public static final String BEAN_VALIDATOR_FACET =
"org.richfaces.validator.";
@Override
@@ -82,12 +78,12 @@
FacesContext context = getFacesContext();
if (event instanceof ValidationEvent) {
// ByPass UpdateModelValue
- context.renderResponse();
+ context.renderResponse();
} else if (event instanceof AjaxEvent) {
// TODO - find all UIMessages components for a parent UIInput.
// for an ajaxSingle component, re-render only target message.
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
- ajaxContext.setSubmittedRegionClientId(this.getClientId(context));
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ ajaxContext.setSubmittedRegionClientId(this.getClientId(context));
}
}
}
@@ -124,72 +120,80 @@
return getParent();
}
- public void encodeAjax(FacesContext context) throws IOException {
- AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
- Set<String> renderedAreas = ajaxContext.getAjaxRenderedAreas();
- List<UIMessage> messages = getMessages(context);
- for (UIMessage message : messages) {
- if (message.isRendered()) {
- message.encodeAll(context);
- renderedAreas.add(message.getClientId(context));
- }
- }
- // Write information about encoded areas after submission.
- AjaxRendererUtils.encodeAreas(context, this);
+ public void encodeAjax(FacesContext context) throws IOException {
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
+ Set<String> renderedAreas = ajaxContext.getAjaxRenderedAreas();
+ List<UIMessage> messages = getMessages(context);
+ for (UIMessage message : messages) {
+ if (message.isRendered()) {
+ message.encodeAll(context);
+ renderedAreas.add(message.getClientId(context));
+ }
+ }
+ // Write information about encoded areas after submission.
+ AjaxRendererUtils.encodeAreas(context, this);
+ }
- }
-
- public List<UIMessage> getMessages(FacesContext context){
- ArrayList<UIMessage> messages = new ArrayList<UIMessage>();
- findMessages(context.getViewRoot(),messages);
- return messages;
- }
+ public List<UIMessage> getMessages(FacesContext context) {
+ ArrayList<UIMessage> messages = new ArrayList<UIMessage>();
+ UIComponent form = AjaxRendererUtils.getNestingForm(this);
+ if (null == form) {
+ form = context.getViewRoot();
+ }
+ findMessages(form, messages);
+ return messages;
+ }
- /**
- * Recursive search messages for the parent component.
- * @param component
- * @param messages
- */
- protected void findMessages(UIComponent component, ArrayList<UIMessage> messages)
{
- // TODO create more intellectual search, symmenric for an UIMessage algoritm.
- Iterator<UIComponent> facetsAndChildren = component.getFacetsAndChildren();
- while (facetsAndChildren.hasNext()) {
- UIComponent child = (UIComponent) facetsAndChildren.next();
- if (child instanceof UIMessage) {
- UIMessage message = (UIMessage) child;
- String messageFor = message.getFor();
- if(null != messageFor && messageFor.equals(getParent().getId())){
- messages.add(message);
- }
- } else {
- findMessages(child, messages);
- }
- }
- }
+ /**
+ * Recursive search messages for the parent component.
+ *
+ * @param component
+ * @param messages
+ */
+ protected void findMessages(UIComponent component, ArrayList<UIMessage>
messages) {
+ // TODO create more intellectual search, symmenric for an UIMessage
+ // algoritm.
+ Iterator<UIComponent> facetsAndChildren =
component.getFacetsAndChildren();
+ while (facetsAndChildren.hasNext()) {
+ UIComponent child = (UIComponent) facetsAndChildren.next();
+ if (child instanceof UIMessage) {
+ UIMessage message = (UIMessage) child;
+ String messageFor = message.getFor();
+ if (null != messageFor && messageFor.equals(getParent().getId()))
{
+ messages.add(message);
+ }
+ } else {
+ findMessages(child, messages);
+ }
+ }
+ }
- /* (non-Javadoc)
- * @see org.ajax4jsf.event.AjaxSource#addAjaxListener(org.ajax4jsf.event.AjaxListener)
- */
- public void addAjaxListener(AjaxListener listener) {
- // TODO Auto-generated method stub
-
- }
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.ajax4jsf.event.AjaxSource#addAjaxListener(org.ajax4jsf.event.AjaxListener)
+ */
+ public void addAjaxListener(AjaxListener listener) {
+ // TODO Auto-generated method stub
- /* (non-Javadoc)
- * @see org.ajax4jsf.event.AjaxSource#getAjaxListeners()
- */
- public AjaxListener[] getAjaxListeners() {
- // TODO Auto-generated method stub
- return null;
- }
+ }
- /* (non-Javadoc)
- * @see
org.ajax4jsf.event.AjaxSource#removeAjaxListener(org.ajax4jsf.event.AjaxListener)
- */
- public void removeAjaxListener(AjaxListener listener) {
- // TODO Auto-generated method stub
-
- }
-
-
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.ajax4jsf.event.AjaxSource#getAjaxListeners()
+ */
+ public AjaxListener[] getAjaxListeners() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see
org.ajax4jsf.event.AjaxSource#removeAjaxListener(org.ajax4jsf.event.AjaxListener)
+ */
+ public void removeAjaxListener(AjaxListener listener) {
+ // TODO Auto-generated method stub
+
+ }
+
}