You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Lukasz Lenart (Jira)" <ji...@apache.org> on 2026/10/15 06:51:00 UTC

[jira] [Updated] (WW-5774) Move combobox change handling into a static script with a delegated listener

     [ https://issues.apache.org/jira/browse/WW-5774?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lukasz Lenart updated WW-5774:
------------------------------
    Fix Version/s: 7.5.0

> Move combobox change handling into a static script with a delegated listener
> ----------------------------------------------------------------------------
>
>                 Key: WW-5774
>                 URL: https://issues.apache.org/jira/browse/WW-5774
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Core Tags
>            Reporter: Lukasz Lenart
>            Priority: Major
>             Fix For: 7.5.0
>
>
> h2. Problem
> After WW-5772 the transfer-select and updownselect tags bind their buttons from a static script through one delegated listener. The combobox tag removes its inline {{onChange}} too, but it does so by emitting a per-instance inline script block (through the {{s.script}} directive, so it carries the nonce) that binds every select marked with {{data-struts-combobox}}.
> That leaves three issues:
> * A Content-Security-Policy based on script hashes or on static scripts only still blocks the combobox, while the transfer selects work under it.
> * The binding block is duplicated verbatim in {{template/simple/combobox.ftl}} and {{template/html5/combobox.ftl}}, so any change has to be made twice.
> * N comboboxes rendered in an iterator emit N script blocks, each scanning the page with {{querySelectorAll}}, plus N redefinitions of the {{autoPopulate_}} function.
> h2. Proposal
> Add a static {{combobox.js}} with a single delegated {{change}} listener that reads the target field from data attributes on the select, matching the approach WW-5772 uses for the transfer selects. The templates then emit no per-instance inline script.
> Related: WW-5772



--
This message was sent by Atlassian Jira
(v8.20.10#820010)