You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2025/02/17 08:59:40 UTC

(myfaces-tobago) 04/04: fix: dropdown in link with ui:repeat jakarta -> javax

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

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

commit d50b29d9d4e5c8334c52b55ad8846b35e3b85e3d
Author: Bernd Bohmann <bo...@apache.org>
AuthorDate: Fri Feb 14 20:49:24 2025 +0100

    fix: dropdown in link with ui:repeat
    jakarta -> javax
    
    Issue: TOBAGO-2385
    
    (cherry picked from commit 70a84c4f552fe22de49dd86615da28c5c70c81da)
---
 .../apache/myfaces/tobago/internal/component/AbstractUICommand.java | 2 +-
 .../tobago/internal/renderkit/renderer/CommandRendererBase.java     | 2 +-
 .../tobago/internal/renderkit/renderer/SegmentLayoutRenderer.java   | 2 +-
 .../main/java/org/apache/myfaces/tobago/util/ComponentUtils.java    | 6 ++++++
 4 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
index 978dc4fc6c..09aa38c712 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
@@ -84,7 +84,7 @@ private ParentOfCommandVisitor(FacesContext facesContext, String clientId) {
     public VisitResult visit(VisitContext context, UIComponent target) {
       if (!target.getClientId(facesContext).equals(clientId)
           && (target instanceof Visual && !((Visual) target).isPlain()
-          || target.getRendererType() != null && target.getRendererType().startsWith("javax.faces"))) {
+          || ComponentUtils.isStandardHtmlRendererType(target))) {
          if (!(target instanceof AbstractUIEvent)
              && (target instanceof UICommand || target instanceof UIInput)) {
            parentOfCommands = true;
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
index 8cb79bedb6..d04401b585 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
@@ -291,7 +291,7 @@ public VisitResult visit(VisitContext context, UIComponent target) {
         renderLater.add(target);
         return VisitResult.REJECT;
       } else if (target instanceof Visual && !((Visual) target).isPlain()
-          || target.getRendererType() != null && target.getRendererType().startsWith("javax.faces")) {
+          || ComponentUtils.isStandardHtmlRendererType(target)) {
         if (!(target instanceof UIParameter) && !(target instanceof AbstractUIBadge)) {
           if (target instanceof AbstractUILink
               || target instanceof AbstractUISelectBooleanCheckbox
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SegmentLayoutRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SegmentLayoutRenderer.java
index ec33c3eb78..6e1ff9655b 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SegmentLayoutRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SegmentLayoutRenderer.java
@@ -79,7 +79,7 @@ public void encodeChildrenInternal(final FacesContext facesContext, final T comp
         (context, target) -> {
       if (!target.getClientId(facesContext).equals(component.getClientId(facesContext))
           && (target instanceof Visual && !((Visual) target).isPlain()
-          || target.getRendererType() != null && target.getRendererType().startsWith("javax.faces"))) {
+          || ComponentUtils.isStandardHtmlRendererType(target))) {
         try {
           encodeChild(facesContext, writer, generator, target);
         } catch (IOException ioException) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
index 0a7f8b2f45..3aea533fa9 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
@@ -79,6 +79,7 @@ public final class ComponentUtils {
       = "org.apache.myfaces.tobago.util.ComponentUtils.RendererKeyPrefix_";
 
   private static final String PAGE_KEY = "org.apache.myfaces.tobago.Page.Key";
+  private static final String STANDARD_HTML_RENDER_KIT_RENDERER_TYPE_PREFIX = "javax.faces";
 
   public static final Class[] ACTION_ARGS = {};
   public static final Class[] ACTION_LISTENER_ARGS = {ActionEvent.class};
@@ -97,6 +98,11 @@ public final class ComponentUtils {
   private ComponentUtils() {
   }
 
+  public static boolean isStandardHtmlRendererType(UIComponent component) {
+    return component.getRendererType() != null
+        && component.getRendererType().startsWith(ComponentUtils.STANDARD_HTML_RENDER_KIT_RENDERER_TYPE_PREFIX);
+  }
+
   @Deprecated(since = "3.0.1", forRemoval = true)
   public static boolean hasErrorMessages(final FacesContext context) {
     for (final FacesMessage message : (Iterable<FacesMessage>) context::getMessages) {