You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by hn...@apache.org on 2026/09/23 13:19:34 UTC
(myfaces-tobago) branch main updated: fix(selectManyCheckbox/selectOneRadio): missing IDs
This is an automated email from the ASF dual-hosted git repository.
henningn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
The following commit(s) were added to refs/heads/main by this push:
new 948b8828f7 fix(selectManyCheckbox/selectOneRadio): missing IDs
948b8828f7 is described below
commit 948b8828f7c485a97268c8a7b76654808beb984f
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Mon Sep 21 19:40:58 2026 +0200
fix(selectManyCheckbox/selectOneRadio): missing IDs
ID is missing for tc:selectManyCheckbox and tc:selectOneRadio if inside a dropdown menu.
* add test
* fix: add IDs
Issue: TOBAGO-2546
---
.../internal/renderkit/renderer/SelectManyCheckboxRenderer.java | 4 ++++
.../tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java | 4 ++++
tobago-core/src/test/resources/renderer/link/manyInsideLink.html | 2 +-
tobago-core/src/test/resources/renderer/link/radioInsideLink.html | 2 +-
4 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java
index ced5b9ba0c..451b8b76c9 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java
@@ -21,6 +21,7 @@
import jakarta.faces.context.FacesContext;
import jakarta.faces.model.SelectItem;
+
import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.internal.component.AbstractUISelectManyCheckbox;
import org.apache.myfaces.tobago.internal.component.AbstractUISelectReference;
@@ -60,6 +61,9 @@ public void encodeBeginField(final FacesContext facesContext, final T component)
final boolean isInsideCommand = isInside(facesContext, HtmlElements.COMMAND);
writer.startElement(getTag(facesContext));
+ if (isInsideCommand) {
+ writer.writeIdAttribute(id);
+ }
writer.writeClassAttribute(
inline ? BootstrapClass.FORM_CHECK_INLINE : null,
component.getCustomClass());
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java
index d70e2963d4..9cfdcc6bcf 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java
@@ -21,6 +21,7 @@
import jakarta.faces.context.FacesContext;
import jakarta.faces.model.SelectItem;
+
import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.internal.component.AbstractUIFormBase;
@@ -112,6 +113,9 @@ protected void encodeBeginField(final FacesContext facesContext, final T compone
final String name = getDecodingId(facesContext, component);
writer.startElement(getTag(facesContext));
+ if (isInsideCommand) {
+ writer.writeIdAttribute(id);
+ }
writer.writeClassAttribute(
inline ? BootstrapClass.FORM_CHECK_INLINE : null,
component.getCustomClass());
diff --git a/tobago-core/src/test/resources/renderer/link/manyInsideLink.html b/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
index 914a851c0e..e86bf546cb 100644
--- a/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
+++ b/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
@@ -18,7 +18,7 @@
<tobago-dropdown id='id' class='dropdown'>
<button type='button' id='id::command' name='id' aria-expanded='false' class='tobago-link btn btn-link tobago-auto-spacing dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
<div class='tobago-dropdown-menu' aria-labelledby='id::command' name='id' data-tobago-for='id'>
-<tobago-select-many-checkbox>
+<tobago-select-many-checkbox id='many'>
<div class='form-check dropdown-item'>
<input class='form-check-input' type='checkbox' name='many' id='many::0' value=''>
<label class='form-check-label' for='many::0'>Stratocaster</label></div>
diff --git a/tobago-core/src/test/resources/renderer/link/radioInsideLink.html b/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
index c3935aefa3..f178c00400 100644
--- a/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
+++ b/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
@@ -18,7 +18,7 @@
<tobago-dropdown id='id' class='dropdown'>
<button type='button' id='id::command' name='id' aria-expanded='false' class='tobago-link btn btn-link tobago-auto-spacing dropdown-toggle'><tobago-behavior event='click' client-id='id' field-id='id::command'></tobago-behavior><span>dropdown</span></button>
<div class='tobago-dropdown-menu' aria-labelledby='id::command' name='id' data-tobago-for='id'>
-<tobago-select-one-radio>
+<tobago-select-one-radio id='radio'>
<div class='form-check dropdown-item'>
<input class='form-check-input' type='radio' checked='checked' name='radio' id='radio::0' value=''>
<label class='form-check-label' for='radio::0'>Stratocaster</label></div>