On Tue, Jan 30, 2018 at 3:45 PM, Daniel Dekany <[email protected]> wrote:
> Tuesday, January 30, 2018, 3:42:28 PM, Woonsan Ko wrote:
>
>> On Tue, Jan 30, 2018 at 3:45 AM, Daniel Dekany <[email protected]> wrote:
>>> Monday, January 29, 2018, 11:20:02 PM, Woonsan Ko wrote:
>>>
>>>> Hi,
>>>>
>>>> While implementing @form.errors directive (migrated from spring
>>>> form:errors taglib), I ended up adding 'messages' nested parameter
>>>> like the following example:
>>>>
>>>> <@form.errors '*'; messages>
>>>>   <#list messages as message>
>>>>     ${message}
>>>>   </#list>
>>>> </@form.errors>
>>>>
>>>> As spring's form:errors jsp tag allows default rendering when there's
>>>> no nested body content, I found the following example doesn't look
>>>> very convenient. With 'messages' omitted, I got a template exception.
>>>>
>>>> <@form.errors 'firstName'; messages /> # rendering the default error
>>>> info markups..
>>>>
>>>> So, I wonder if there's a way to omit the 'messages' nested parameter.
>>>> The javadocs of CallPlace#getNestedContentParameterCount() and
>>>> #executeNestedContent() say about the possibility with less nested
>>>> parameters somehow, but I can't figure out how to make it flexible in
>>>> the directive.
>>>>
>>>> Please let me know if you have any hints.
>>>
>>> I suppose nested content is allowed exactly if there's a nested
>>> content argument (like `; message`). So you can decide if there's a
>>> nested content argument with
>>> CallPlace.getNestedContentParameterCount(), and if there isn't, then
>>> you don't call CallPlace.executeNestedContent (but check if
>>> CallPlace.hasNestedContent() returns `true`, in which case throw a
>>> TemplateException that explains the problem), otherwise you call
>>> CallPlace.executeNestedContent with 1 nested content argument.
>>
>> Thank you so much! Now, it's very clear to me. :-)
>>
>>>
>>> Not sure if I'm missing something here. If not, what was the missing
>>> piece? That information should be added to the API docs.
>>
>> I didn't understand this quite well yesterday: "If, however, you want
>> to allow the caller to declare less parameters..."
>> In my example, the 'caller' seems to mean the directive user (who is
>> writing the directive in the template), and 'you' is I as a directive
>> implementer. I read 'caller' as the directive code itself yesterday.
>
> I don't follow this. You can call a directive. The caller is the FTL
> tag that calls it, like <@foo />. (It's entered by some user,
> obviously.) The directive itself is the called.

It's probably my problem. I was thinking too much last night. ;-)

>
>> That was my confusion. ;-)
>> Perhaps would it be okay if I change the 'caller' to 'directive/function 
>> user'?
>
> Perhaps this: "allow the directive/function call to declare less
> nested content parameters".

Thanks. I've replaced that.

Cheers,

Woonsan

>
>> Regards,
>>
>> Woonsan
>>
>>>
>>>> Regards,
>>>>
>>>> Woonsan
>>>
>>> --
>>> Thanks,
>>>  Daniel Dekany
>>>
>>
>
> --
> Thanks,
>  Daniel Dekany
>

Reply via email to