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)) {