[hibernate-issues] [Hibernate-JIRA] Commented: (HV-585) Order of validation messages is lost

Gunther Schmidl (JIRA) noreply at atlassian.com
Fri May 11 03:22:12 EDT 2012


    [ https://hibernate.onjira.com/browse/HV-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46609#comment-46609 ] 

Gunther Schmidl commented on HV-585:
------------------------------------

Right, I'm saying it would be nice to have the option of a guaranteed order. As an example, in my current application, I add five constraint violations at once if specific conditions are not met, so you would get something like:

Invalid password: {numMin} of the following conditions must be met:
At least {numLC} lowercase characters.
At least {numUC} uppercase characters.
At least {numSC} special characters.
At least {numNC} digits.

I am adding these constraints using validatorContext.buildConstraintViolationWithTemplate(message).addConstraintViolation(), which puts the items in an ArrayList. Later, they are moved to a HashSet, and then to a String[] array for display.

So the question is: why keep order intact when adding constraints (ArrayList) and displaying constraints (String[]), but not inbetween?

Obviously, the HashSet randomly jumbles the order of messages, which then make no sense. Using a LinkedHashSet in the implementation instead would keep the order intact.

As it is, I am currently implementing my own <custom:errors> JSP tag which sorts the messages by a number prefix it then removes, which is of course suboptimal.

> Order of validation messages is lost
> ------------------------------------
>
>                 Key: HV-585
>                 URL: https://hibernate.onjira.com/browse/HV-585
>             Project: Hibernate Validator
>          Issue Type: Improvement
>          Components: engine
>    Affects Versions: 4.3.0.Final
>         Environment: ---
>            Reporter: Gunther Schmidl
>              Labels: hibernate, validation
>
> When adding validation messages, they are stored in an ArrayList. Later on, they are transferred to a HashSet, and finally to a String[] array. Naturally, putting them in a HashSet screws up the order of the messages, which may be important (for example, I have a "header" error message I wish to display first). Please consider changing the HashSet to a LinkedHashSet.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list