My solution was a combination of the ideas here, let me know what you think
:)  While I don't particularly love the idea of using domain exceptions to
render feedback on the front end, I don't have any control over certain
decisions; still, being able to use a strict domain and have it interact
with the UI is still a very interesting, and potentially useful example... 
All of the logic in reporting an error is done within the custom component.

public class DomainTextField extends TextField
{

    public DomainTextField(String id)
    {
        super(id);
        add(new AbstractValidator()
        {
            protected void onValidate(IValidatable arg0)
            {
                checkAgainstModelObject(arg0);
            }
        });
    }

    private void checkAgainstModelObject(IValidatable validatableInput)
    {
        //I don't want to lose the initial value
        Object tmp = getDefaultModelObject();
        try
        {
            setDefaultModelObject(getConvertedInput());
        } catch (final Exception ex)
        {//This is the worst part IMHO, I should be checking a specific
exception
            validatableInput.error(new IValidationError()
            {
                public String getErrorMessage(
                        IErrorMessageSource messageSource)
                {
                    return ex.getCause().getMessage();
                }
            });
        } finally
        {//if possible, set back to the inital value
            if (tmp != null)
            {
                setDefaultModelObject(tmp);
            }
        }
    }
}

-- 
View this message in context: 
http://www.nabble.com/Validation-From-A-Custom-Component-tp22060300p22070136.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to