Author: alexsmirnov
Date: 2008-07-10 19:24:19 -0400 (Thu, 10 Jul 2008)
New Revision: 9518
Added:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationListener.java
Removed:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/renderkit/html/ValidationListener.java
Modified:
trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java
trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
trunk/framework/test/src/test/java/org/ajax4jsf/context/MockAjaxContext.java
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/LengthBean.java
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MaxBean.java
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinBean.java
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinMaxBean.java
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotEmptyBean.java
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotNullBean.java
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/Validable.java
trunk/sandbox/samples/beanValidatorSample/src/main/webapp/WEB-INF/faces-config.xml
trunk/sandbox/samples/beanValidatorSample/src/main/webapp/pages/index.jsp
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationEvent.java
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java
trunk/ui/message/src/main/java/org/richfaces/renderkit/RichMessageBaseRenderer.java
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessageRenderer.java
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessagesRenderer.java
Log:
Code review for a rich:message component.
BeanValidator now re-render only corresponding messages.
Modified: trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java
===================================================================
--- trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java 2008-07-10
16:48:43 UTC (rev 9517)
+++ trunk/framework/api/src/main/java/org/ajax4jsf/context/AjaxContext.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -100,6 +100,8 @@
public abstract void setAjaxAreasToProcess(Set<String> ajaxAreasToProcess);
+ public abstract void setSubmittedRegionClientId(String submittedClientId);
+
/**
* Get instance of current AJAX Context. Instance get by
* variable {@link AjaxContext#AJAX_CONTEXT_KEY}
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/context/AjaxContextImpl.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -652,6 +652,7 @@
* @param submittedClientId
* The submittedClientId to set.
*/
+ @Override
public void setSubmittedRegionClientId(String submittedClientId) {
this.submittedRegionClientId = submittedClientId;
}
Modified: trunk/framework/test/src/test/java/org/ajax4jsf/context/MockAjaxContext.java
===================================================================
---
trunk/framework/test/src/test/java/org/ajax4jsf/context/MockAjaxContext.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/framework/test/src/test/java/org/ajax4jsf/context/MockAjaxContext.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -315,4 +315,7 @@
return null;
}
+ public void setSubmittedRegionClientId(String submittedClientId) {
+ }
+
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/LengthBean.java
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/LengthBean.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/LengthBean.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -46,8 +46,13 @@
this.intValue = intValue;
}
- public String getDescription() {
- return "String Length Validation";
+ public String getTextDescription() {
+ return "Validate String Length, for a range 2-10 chars";
}
+ public String getIntDescription() {
+ // TODO Auto-generated method stub
+ return "Integer Value, no restrictions";
+ }
+
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MaxBean.java
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MaxBean.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MaxBean.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -48,8 +48,13 @@
this.intValue = intValue;
}
- public String getDescription() {
- return "Max integer Validation";
+ public String getTextDescription() {
+ return "Text value, no restrictions";
}
+ public String getIntDescription() {
+ // TODO Auto-generated method stub
+ return "Integer Value, less then 10";
+ }
+
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinBean.java
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinBean.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinBean.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -47,8 +47,13 @@
this.intValue = intValue;
}
- public String getDescription() {
- return "Min integer Validation";
+ public String getTextDescription() {
+ return "Text value, no restrictions";
}
+ public String getIntDescription() {
+ // TODO Auto-generated method stub
+ return "Integer Value, more then 1";
+ }
+
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinMaxBean.java
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinMaxBean.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/MinMaxBean.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -49,8 +49,13 @@
this.intValue = intValue;
}
- public String getDescription() {
- return "Min and Max integer Validation";
+ public String getTextDescription() {
+ return "Text Value, no restrictions";
}
+ public String getIntDescription() {
+ // TODO Auto-generated method stub
+ return "Integer Value, fron 2 to 10";
+ }
+
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotEmptyBean.java
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotEmptyBean.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotEmptyBean.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -45,8 +45,13 @@
this.intValue = intValue;
}
- public String getDescription() {
- return "Not Empty Validation";
+ public String getTextDescription() {
+ return "Text value, Not Empty Validation";
}
+ public String getIntDescription() {
+ // TODO Auto-generated method stub
+ return "Integer Value, no restrictions";
+ }
+
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotNullBean.java
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotNullBean.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/NotNullBean.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -44,8 +44,13 @@
this.intValue = intValue;
}
- public String getDescription() {
- return "Not Null Validation";
+ public String getTextDescription() {
+ return "Text Value, Not Null Validation";
}
+ public String getIntDescription() {
+ // TODO Auto-generated method stub
+ return "Integer Value, no restrictions";
+ }
+
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/Validable.java
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/Validable.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/java/org/richfaces/Validable.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -11,7 +11,9 @@
public String getText();
- public String getDescription();
+ public String getTextDescription();
public int getIntValue();
+
+ public String getIntDescription();
}
Modified:
trunk/sandbox/samples/beanValidatorSample/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
---
trunk/sandbox/samples/beanValidatorSample/src/main/webapp/WEB-INF/faces-config.xml 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/samples/beanValidatorSample/src/main/webapp/WEB-INF/faces-config.xml 2008-07-10
23:24:19 UTC (rev 9518)
@@ -12,4 +12,9 @@
<managed-bean-class>org.richfaces.DataBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
+ <managed-bean>
+ <managed-bean-name>lengthBean</managed-bean-name>
+ <managed-bean-class>org.richfaces.LengthBean</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
</faces-config>
Modified: trunk/sandbox/samples/beanValidatorSample/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/sandbox/samples/beanValidatorSample/src/main/webapp/pages/index.jsp 2008-07-10
16:48:43 UTC (rev 9517)
+++ trunk/sandbox/samples/beanValidatorSample/src/main/webapp/pages/index.jsp 2008-07-10
23:24:19 UTC (rev 9518)
@@ -3,21 +3,38 @@
<%@ taglib
uri="http://labs.jboss.com/jbossrichfaces/ui/ui/beanValidator"
prefix="v"%>
-<%@ taglib
uri="http://richfaces.org/rich" prefix="rich"%>
+<%@taglib
uri="http://richfaces.org/rich" prefix="rich"%>
<%@taglib prefix="a4j"
uri="http://richfaces.org/a4j"%>
<html>
<head>
<title>Hibernate validator test</title>
</head>
<body>
+<h1>Using Hibernate validator annotations in the JSF beans</h1>
+<p>Validation requests send as AJAX from "onblur" event</p>
<f:view>
<h:form id="form">
+ <rich:panel>
+ <f:facet name="header">
+ <h2>Single input field with label and message</h2>
+ </f:facet>
+ <h:outputLabel for="ltext"
value="#{lengthBean.textDescription}" />
+ <h:inputText id="ltext" value="#{lengthBean.text}">
+ <v:ajaxValidator event="onblur" />
+ </h:inputText>
+ <rich:message for="ltext" showDetail="true"
showSummary="true" />
+ </rich:panel>
+ <h2>Input fields with label and message in the JSF dataTable</h2>
<h:dataTable value="#{data}" var="bean"
id="table">
+ <f:facet name="header">
+ <h:outputText value="Validate values in the data table" />
+ </f:facet>
+
<h:column>
<f:facet name="header">
<h:outputText value="text field" />
</f:facet>
- <h:outputLabel for="text" value="Text input:" />
+ <h:outputLabel for="text" value="#{bean.textDescription}"
/>
<h:inputText id="text" value="#{bean.text}">
<v:ajaxValidator event="onblur" />
</h:inputText>
@@ -27,20 +44,14 @@
<f:facet name="header">
<h:outputText value="integer field" />
</f:facet>
- <h:outputLabel for="intValue" value="Number input:" />
+ <h:outputLabel for="intValue" value="#{bean.intDescription}"
/>
<h:inputText id="intValue" value="#{bean.intValue}">
<v:ajaxValidator event="onblur" />
</h:inputText>
- <rich:message for="intValue" />
+ <rich:message for="intValue" showDetail="true"
showSummary="true" />
</h:column>
- <h:column>
- <f:facet name="header">
- <h:outputText value="description" />
- </f:facet>
- <h:outputText value="#{bean.description}"></h:outputText>
- </h:column>
</h:dataTable>
- <h:commandButton value="Post submit"></h:commandButton>
+ <h:commandButton value="Non-AJAX Post submit"></h:commandButton>
</h:form>
<rich:messages />
</f:view>
Modified:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java
===================================================================
---
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -4,12 +4,20 @@
package org.richfaces.component;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
import javax.el.ValueExpression;
import javax.faces.FacesException;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
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;
@@ -17,9 +25,13 @@
import javax.faces.validator.Validator;
import org.ajax4jsf.component.AjaxComponent;
+import org.ajax4jsf.component.AjaxContainer;
import org.ajax4jsf.component.AjaxSupport;
import org.ajax4jsf.component.EventValueExpression;
+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;
@@ -30,7 +42,7 @@
* JSF component class
*
*/
-public abstract class UIBeanValidator extends UIComponentBase implements AjaxComponent,
AjaxSupport {
+public abstract class UIBeanValidator extends UIComponentBase implements AjaxComponent,
AjaxSupport,AjaxContainer {
public static final String COMPONENT_TYPE = "org.richfaces.BeanValidator";
@@ -67,12 +79,15 @@
public void broadcast(FacesEvent event) throws AbortProcessingException {
super.broadcast(event);
if (event.getComponent() == this) {
+ FacesContext context = getFacesContext();
if (event instanceof ValidationEvent) {
// ByPass UpdateModelValue
- FacesContext.getCurrentInstance().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));
}
}
}
@@ -109,4 +124,72 @@
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 List<UIMessage> getMessages(FacesContext context){
+ ArrayList<UIMessage> messages = new ArrayList<UIMessage>();
+ findMessages(context.getViewRoot(),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);
+ }
+ }
+ }
+
+ /* (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
+
+ }
+
+
}
Modified:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationEvent.java
===================================================================
---
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationEvent.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationEvent.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -7,7 +7,6 @@
import javax.faces.event.FacesEvent;
import javax.faces.event.FacesListener;
-import org.richfaces.renderkit.html.ValidationListener;
/**
* @author asmirnov
Copied:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationListener.java
(from rev 9517,
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/renderkit/html/ValidationListener.java)
===================================================================
---
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationListener.java
(rev 0)
+++
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationListener.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -0,0 +1,17 @@
+/**
+ *
+ */
+package org.richfaces.event;
+
+import javax.faces.event.FacesListener;
+
+
+/**
+ * @author asmirnov
+ *
+ */
+public interface ValidationListener extends FacesListener {
+
+ public void processValidation(ValidationEvent event);
+
+}
Property changes on:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/event/ValidationListener.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/renderkit/html/ValidationListener.java
===================================================================
---
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/renderkit/html/ValidationListener.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/renderkit/html/ValidationListener.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -1,18 +0,0 @@
-/**
- *
- */
-package org.richfaces.renderkit.html;
-
-import javax.faces.event.FacesListener;
-
-import org.richfaces.event.ValidationEvent;
-
-/**
- * @author asmirnov
- *
- */
-public interface ValidationListener extends FacesListener {
-
- public void processValidation(ValidationEvent event);
-
-}
Modified:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java
===================================================================
---
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -46,8 +46,9 @@
input.setValid(false);
// send all validation messages.
for (String msg : messages) {
+ // TODO - create Summary message ?
context.addMessage(component.getClientId(context), new FacesMessage(
- FacesMessage.SEVERITY_ERROR, msg, ""));
+ FacesMessage.SEVERITY_ERROR, "", msg));
}
}
}
Modified:
trunk/ui/message/src/main/java/org/richfaces/renderkit/RichMessageBaseRenderer.java
===================================================================
---
trunk/ui/message/src/main/java/org/richfaces/renderkit/RichMessageBaseRenderer.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/ui/message/src/main/java/org/richfaces/renderkit/RichMessageBaseRenderer.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -2,6 +2,7 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -15,10 +16,8 @@
import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.ajax4jsf.renderkit.RendererUtils;
import org.ajax4jsf.resource.InternetResource;
-import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.richfaces.component.UIRichMessages;
import org.richfaces.renderkit.html.HtmlRichMessageRenderer;
/**
@@ -42,7 +41,7 @@
private static final String ALL_NAME = "ALL";
- protected List acceptLevels = new ArrayList();
+// protected List acceptLevels = new ArrayList();
private final InternetResource[] styles =
{getResource("/org/richfaces/renderkit/html/css/msg.css"),getResource("/org/richfaces/renderkit/html/css/msgs.css")};
@@ -71,7 +70,7 @@
if(ignoreThis){
stylesAll = rsrcs;
}else{
- Set rsrcsSet = new java.util.LinkedHashSet();
+ Set<InternetResource> rsrcsSet = new
java.util.LinkedHashSet<InternetResource>();
for(int i = 0; i < rsrcs.length; i++ ){
rsrcsSet.add(rsrcs[i]);
}
@@ -88,9 +87,9 @@
return stylesAll;
}
- protected Iterator getMessageIterator(FacesContext context, String forClientId,
UIComponent component) throws IOException{
+ protected Iterator<FacesMessage> getMessageIterator(FacesContext context, String
forClientId, UIComponent component) throws IOException{
- Iterator msgIter = null;
+ Iterator<FacesMessage> msgIter = null;
if(forClientId != null){
@@ -99,7 +98,7 @@
UIComponent result = RendererUtils.getInstance().
findComponentFor(component, forClientId);
if (result == null) {
- msgIter = CollectionUtils.EMPTY_COLLECTION.iterator();
+ msgIter = Collections.<FacesMessage>emptyList().iterator();
} else {
msgIter = context.getMessages(result.getClientId(context));
}
@@ -261,10 +260,10 @@
}
- protected boolean isAcceptableMessagesPresent(Iterator messagesIter) {
+ protected boolean isAcceptableMessagesPresent(List<String> acceptLevels,
Iterator<FacesMessage> messagesIter) {
while(messagesIter.hasNext()){
- FacesMessage message = (FacesMessage)(messagesIter.next());
- boolean exist = isAcceptableMessage(message);
+ FacesMessage message = (messagesIter.next());
+ boolean exist = isAcceptableMessage(message, acceptLevels);
if (exist) {
return true;
}
@@ -272,7 +271,7 @@
return false;
}
- protected boolean isAcceptableMessage(FacesMessage message){
+ protected boolean isAcceptableMessage(FacesMessage message, List<String>
acceptLevels){
boolean accept = false;
@@ -302,9 +301,9 @@
return accept;
}
- protected List creatAcceptLevels(String [] levels){
+ protected List<String> creatAcceptLevels(String [] levels){
- List acceptLevels = new ArrayList();
+ List<String> acceptLevels = new ArrayList<String>();
for (int i = 0; i < levels.length; i++) {
acceptLevels.add(levels[i].toUpperCase());
Modified:
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessageRenderer.java
===================================================================
---
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessageRenderer.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessageRenderer.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -2,6 +2,7 @@
import java.io.IOException;
import java.util.Iterator;
+import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
@@ -23,7 +24,7 @@
protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
- Iterator msgIter = null;
+ Iterator<FacesMessage> msgIter = null;
UIRichMessage msgComponent = (UIRichMessage)component;
String forClientId = msgComponent.getFor();
@@ -59,8 +60,8 @@
ResponseWriter writer = context.getResponseWriter();
- acceptLevels = creatAcceptLevels(uiMsg.getLevel().split(","));
- if(isAcceptableMessage(facesMsg)){
+ List<String> acceptLevels =
creatAcceptLevels(uiMsg.getLevel().split(","));
+ if(isAcceptableMessage(facesMsg, acceptLevels)){
outerStyles(uiMsg, context, writer, facesMsg);
renderMarkerFacet(uiMsg,context, writer,facesMsg);
renderLabel(uiMsg, context, writer, facesMsg);
@@ -180,7 +181,7 @@
}
- protected Class getComponentClass() {
+ protected Class<? extends UIComponent> getComponentClass() {
return UIMessage.class;
}
Modified:
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessagesRenderer.java
===================================================================
---
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessagesRenderer.java 2008-07-10
16:48:43 UTC (rev 9517)
+++
trunk/ui/message/src/main/java/org/richfaces/renderkit/html/HtmlRichMessagesRenderer.java 2008-07-10
23:24:19 UTC (rev 9518)
@@ -5,6 +5,7 @@
import java.io.IOException;
import java.util.Iterator;
+import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
@@ -22,7 +23,6 @@
*/
public class HtmlRichMessagesRenderer extends RichMessageBaseRenderer {
- private boolean isWroteTable = false;
protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
UIRichMessages uiMessages = (UIRichMessages)component;
@@ -34,18 +34,18 @@
forIds = "";
}
- Iterator messagesIter = getMessageIterator(context, forIds, component);
+ Iterator<FacesMessage> messagesIter = getMessageIterator(context, forIds,
component);
boolean isDisplayNone = !messagesIter.hasNext();
+ String [] levels = uiMessages.getLevel().split(",");
+ List<String> acceptLevels = creatAcceptLevels(levels);
if(!isDisplayNone){
- String [] levels = uiMessages.getLevel().split(",");
- acceptLevels = creatAcceptLevels(levels);
- if (!isAcceptableMessagesPresent(messagesIter)) {
+ if (!isAcceptableMessagesPresent(acceptLevels, messagesIter)) {
isDisplayNone = true;
}
}
-
+ boolean isWroteTable = false;
layout = (String)uiMessages.getAttributes().get("layout");
if((layout != null) && (layout.equals("table"))){
@@ -69,13 +69,16 @@
messagesIter = getMessageIterator(context, forIds, component);
if(!messagesIter.hasNext()){
- renderBody(uiMessages, context, writer, null);
+ renderBody(uiMessages, context, writer, null,isWroteTable);
}else{
while(messagesIter.hasNext()){
FacesMessage facesMsg = (FacesMessage)(messagesIter.next());
-
- renderBody(uiMessages, context, writer, facesMsg);
+
+ if(isAcceptableMessage(facesMsg, acceptLevels)){
+
+ renderBody(uiMessages, context, writer, facesMsg,isWroteTable);
+ }
}
}
@@ -203,12 +206,9 @@
}
- public void renderBody(UIRichMessages uiMessages, FacesContext context, ResponseWriter
writer,FacesMessage facesMsg) throws IOException{
+ public void renderBody(UIRichMessages uiMessages, FacesContext context, ResponseWriter
writer,FacesMessage facesMsg,boolean isWroteTable) throws IOException{
if(uiMessages.isPassed() || facesMsg != null ){
-
- if(isAcceptableMessage(facesMsg)){
-
if(isWroteTable){
writer.startElement(HTML.TR_ELEMENT, uiMessages);
writer.startElement(HTML.td_ELEM, uiMessages);
@@ -227,11 +227,10 @@
writer.endElement("dt");
}
}
- }
}
- protected Class getComponentClass() {
+ protected Class<? extends UIComponent> getComponentClass() {
return UIMessages.class;
}