How is that going the fix the problem? I'd end up with markup, but no
behaviour on top of it.

Jörn

On Mon, May 25, 2009 at 5:52 PM, Igor Vaynberg <igor.vaynb...@gmail.com> wrote:
> right, so remove that code since you have replaced that component with
> pure markup.
>
> -igor
>
> On Mon, May 25, 2009 at 8:48 AM, Jörn Zaefferer
> <joern.zaeffe...@googlemail.com> wrote:
>> That was the idea. But Wicket still can't find the component markup
>> when looking for it. The form adds this elsewhere:
>>
>> add(new HiddenField<String>("csrf-protection", new
>> Model<String>(csrfProtection())).setRequired(true).add(new
>> IValidator<String>() {
>>        public void validate(IValidatable<String> validatable) {
>>                log.warn("potential csrf attack, submitted value: " +
>> validatable.getValue() + ", expected: " + csrfProtection());
>>                validatable.error(new ValidationError().setMessage("wrong csrf
>> protection cookie"));
>>        }
>> }));
>>
>> Jörn
>>
>> On Mon, May 25, 2009 at 5:44 PM, Igor Vaynberg <igor.vaynb...@gmail.com> 
>> wrote:
>>> if you write it out in oncomponenttagbody then you dont need it in the
>>> markupo anymore.
>>>
>>> -igor
>>>
>>> On Mon, May 25, 2009 at 6:32 AM, Jörn Zaefferer
>>> <joern.zaeffe...@googlemail.com> wrote:
>>>> Hi,
>>>>
>>>> my application uses a form subclass everywhere for CSRF protection.
>>>> Each form needs a hidden field like this: <input type="hidden"
>>>> wicket:id="csrf-protection" />
>>>> The wicket component for that is added by the form subclass
>>>> (SecureForm) which all other forms in the application extend.
>>>>
>>>> Currently each form has to include that markup somewhere, producing a
>>>> lot of duplication.
>>>>
>>>> I'm looking for a way to get rid of that duplication. An approach I'm
>>>> currently investigating is to generate the markup, similar to how Form
>>>> genrates a hidden input it its onComponentTagBody:
>>>>
>>>> @Override
>>>> protected void onComponentTagBody(MarkupStream markupStream,
>>>> ComponentTag openTag) {
>>>>        String nameAndId = get("csrf-protection").getId();
>>>>        AppendingStringBuffer buffer = new AppendingStringBuffer(
>>>>        "<input type=\"hidden\" name=\"").append(nameAndId).append("\" />");
>>>>        getResponse().write(buffer);
>>>>        super.onComponentTagBody(markupStream, openTag);
>>>> }
>>>>
>>>> That doesn't work, Wicket throws an exception of a missing reference
>>>> in markup anyway. Likely because this just writes to the response, not
>>>> extending the markup.
>>>> I also don't see any way to achieve this via MarkupStream or ComponentTag.
>>>>
>>>> Any ideas?
>>>>
>>>> Regards
>>>> Jörn Zaefferer
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

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

Reply via email to