You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2021/10/22 10:06:01 UTC

[myfaces-tobago] branch master updated: fix: label for reference in messages

This is an automated email from the ASF dual-hosted git repository.

lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ffe902  fix: label for reference in messages
0ffe902 is described below

commit 0ffe902081d84ca8670a8d6f5a40509b0bbb956b
Author: Udo Schnurpfeil <ud...@irian.eu>
AuthorDate: Fri Oct 22 11:51:54 2021 +0200

    fix: label for reference in messages
---
 .../internal/component/AbstractUIMessages.java     | 42 ++++++++++++++++------
 .../renderkit/renderer/MessagesRenderer.java       | 15 +++-----
 2 files changed, 35 insertions(+), 22 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMessages.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMessages.java
index ec8e946..b11ad71 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMessages.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMessages.java
@@ -19,10 +19,12 @@
 
 package org.apache.myfaces.tobago.internal.component;
 
+import org.apache.myfaces.tobago.component.SupportFieldId;
 import org.apache.myfaces.tobago.component.Visual;
 import org.apache.myfaces.tobago.layout.OrderBy;
 
 import jakarta.faces.application.FacesMessage;
+import jakarta.faces.component.UIComponent;
 import jakarta.faces.context.FacesContext;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -72,7 +74,14 @@ public abstract class AbstractUIMessages extends jakarta.faces.component.UIMessa
         if (facesMessage.getSeverity().getOrdinal() > getMaxSeverity().getOrdinal()) {
           continue;
         }
-        messages.add(new Item(clientId, facesMessage));
+        final UIComponent component = clientId != null ? facesContext.getViewRoot().findComponent(clientId) : null;
+        final String forId;
+        if (component instanceof SupportFieldId) {
+          forId = ((SupportFieldId)component).getFieldId(facesContext);
+        } else {
+          forId = clientId;
+        }
+        messages.add(new Item(forId, facesMessage));
       }
     }
     return messages;
@@ -80,20 +89,36 @@ public abstract class AbstractUIMessages extends jakarta.faces.component.UIMessa
 
   public static class Item {
 
-    private String clientId;
+    private String forId;
     private FacesMessage facesMessage;
 
     public Item(final String clientId, final FacesMessage facesMessage) {
-      this.clientId = clientId;
+      this.forId = clientId;
       this.facesMessage = facesMessage;
     }
 
+    public String getForId() {
+      return forId;
+    }
+
+    public void setForId(final String forId) {
+      this.forId = forId;
+    }
+
+    /**
+     * @deprecated since Tobago 5.0.0. Please use {@link #setForId}
+     */
+    @Deprecated
     public String getClientId() {
-      return clientId;
+      return forId;
     }
 
-    public void setClientId(final String clientId) {
-      this.clientId = clientId;
+    /**
+     * @deprecated since Tobago 5.0.0. Please use {@link #setForId}
+     */
+    @Deprecated
+    public void setClientId(final String forId) {
+      this.forId = forId;
     }
 
     public FacesMessage getFacesMessage() {
@@ -114,9 +139,4 @@ public abstract class AbstractUIMessages extends jakarta.faces.component.UIMessa
   public abstract OrderBy getOrderBy();
 
   public abstract boolean isConfirmation();
-
-/* TBD: if we support JSF 1.2 whe have to do something here.
-  public abstract String getFor();
-*/
-
 }
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessagesRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessagesRenderer.java
index 0eb88e4..436ec62 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessagesRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessagesRenderer.java
@@ -19,12 +19,10 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
-import org.apache.myfaces.tobago.context.Markup;
 import org.apache.myfaces.tobago.internal.component.AbstractUIMessages;
 import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
 import org.apache.myfaces.tobago.renderkit.html.Arias;
 import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
@@ -74,10 +72,7 @@ public class MessagesRenderer<T extends AbstractUIMessages> extends RendererBase
 
     writer.startElement(HtmlElements.TOBAGO_MESSAGES);
     writer.writeIdAttribute(component.getClientId(facesContext));
-    final Markup markup = component.getMarkup();
-    writer.writeClassAttribute(
-        TobagoClass.MESSAGES,
-        component.getCustomClass());
+    writer.writeClassAttribute(component.getCustomClass());
 
     FacesMessage.Severity lastSeverity = null;
     boolean first = true;
@@ -105,7 +100,7 @@ public class MessagesRenderer<T extends AbstractUIMessages> extends RendererBase
         writer.endElement(HtmlElements.BUTTON);
       }
 
-      encodeMessage(writer, component, message, item.getClientId());
+      encodeMessage(writer, component, message, item.getForId());
 
       lastSeverity = severity;
       first = false;
@@ -140,7 +135,7 @@ public class MessagesRenderer<T extends AbstractUIMessages> extends RendererBase
 
   private void encodeMessage(
       final TobagoResponseWriter writer, final AbstractUIMessages messages, final FacesMessage message,
-      final String clientId)
+      final String forId)
       throws IOException {
 
     final String summary = message.getSummary();
@@ -148,9 +143,7 @@ public class MessagesRenderer<T extends AbstractUIMessages> extends RendererBase
     final boolean showSummary = summary != null && messages.isShowSummary() && summary.length() > 0;
     final boolean showDetails = detail != null && messages.isShowDetail() && detail.length() > 0;
     writer.startElement(HtmlElements.LABEL);
-    if (clientId != null) {
-      writer.writeAttribute(HtmlAttributes.FOR, clientId, false);
-    }
+    writer.writeAttribute(HtmlAttributes.FOR, forId, false);
     writer.writeAttribute(HtmlAttributes.TITLE, detail, true);
 
     if (showSummary && showDetails && !summary.equals(detail)) {