Re: [tools 2.0] ValueParser.getStrings splits on comma?

Christopher Schultz <[email protected]> Sat, 14 Oct 2017 10:18:43 -0400
Newsgroups gmane.comp.jakarta.velocity.user
Message-ID <[email protected]>
Nathan,

(Apologies for the late reply.)

On 8/22/17 10:58 AM, Nathan Bubna wrote:
> Yeah, that's not ideal. You can configure the string delimiter in your tool
> config. But this seems like surprising behavior for a ParameterTool to
> have. The dangers of inheritance, i think. ConversionTool and ValueParser
> are both built with formats in mind where it makes sense to watch for
> delimited lists. ParameterTool works with inputs where lists have multiple
> entries of the same key, instead of delimited values for a single entry. It
> is convenient to share the interface and conversion code, but we should
> probably change ParameterTool to act as expected by default.
> 
> Care to open an issue for this? Or maybe even patch it? :) I may have time
> this week, but can't be sure.

So... just change the default delimiter to ... something like a NUL
(0x00) character? Or maybe RS (Record Separator) 0x1e?

Does anyone have any preference?

Also, what's the best way to make this backward-compatible?

-chris

> On Mon, Aug 21, 2017 at 6:00 PM, Christopher Schultz <
> [email protected]> wrote:
> 
> All,
> 
> I'm not sure if I've used ValueParser.getStrings before (really,
> ParameterParser.getStrings, in this case), but I'm surprised by what
> is happening. Is this expected?
> 
> Request POST parameters:
> foo=bar&comment=This, is a comment.
> 
> Velocity template code:
> 
> #set($comments = $parameterParser.getStrings('comment'))
> #if(0 < $comments.size())
> #foreach($comment in $comments)
>   <div class="comment">
>     <textarea name="comment"
> placeholder="$msg.label.optional_comments">#htmlEscape($comment)</textar
> ea>
>   </div>
> #end## foreach
> #end## if(comments)
> 
> I would expect this to produce a single <textarea> element with the
> text "This, is a comment." in the text area. Instead, I get two
> <textarea> elements, one containing "This" and the other containing
> "is a comment.".
> 
> That seems ... crazy to me. I'm sure I can just change:
> 
> #set($comments = $parameterParser.getStrings('comment'))
> to
> #set($comments = $request.getParameterValues('comment'))
> 
> ... but I figured that ParameterParser would do the same thing, no?
> 
> -chris
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
signature.asc (application/pgp-signature, 938 B)
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlniHMMACgkQHPApP6U8
pFgLaBAAgimnmtdjidlp6pcBEEhmI9rNOpiCa9tIazPnxnfH9IR5RXnVUgK8p5JW
UGKh/931+xZL77Pg4EVp5+UbTk+qfee4P/AyYBLB2wcrX0LTXOW2pQZWziOKZcF4
OM4pxn789z16puw0KMm9mqYkCrKPUuQ/Pf2rZeLObeXZB2t9jIRMK9rG7sWVVO2U
K0GFidbOBG6MMkxWK1UObdmWez73luyzwPcSWSEEz2lr3hX4dCq+dt5/dLQU/jPI
Uw3h366gYzpjvwuzuB0wt31EQTLOCEdw/CjLjM7KgarKqKBGkgq4Pt9XuQEdqdQb
tRFkigx4XCZwB+BfVuVBf0s61qeIdqJQAMLNuw2lR4jOZoLka99wGrShWm2FKKFD
xwcTwQ8nsiOIXm+/dmg31OHumWXwgaf/Uata9kA9bc4plJVCyD0pPy6OOa4/KDgG
moSREb+0U7IpBrBucBVvjyWJH7BcbbRBvKGR4o8dAZu450YQ009sfPhCImCesu5P
RNDmLa/p95csVRQqfDu1ah85t1scxDfMG6mXmbG//aY3Lvy+7wPLc8fukTtk1R3M
EQkCVKYzSUpS5In9ONn4plcwgmjtTMJOcDAT6IPR0X0hUfjC7j4xenKW/j16c6I3
L5SCp7bAMUUgQdyGAkulZS2BiLaYDw08vwsn99SLFmSr0+bobaY=
=OS1X
-----END PGP SIGNATURE-----