Lukasz Lenart created WW-5774:
---------------------------------

             Summary: 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


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)

Reply via email to