I think that changing this behaviour would be counter productive. I understand that it’s frustrating that you have to explictly mark all content potentially returning empty navigators with required: false, even when it is accessed by another content definition that is already mark with it. And that it might seem to you counter intuitive. Please bear in mind that the goal of this mechanism is to fail fast - you get an exception as soon as content definition returns an empty navigator or a falsey value unless you explocitly say that this prticular definition does not always return something. The only way of implementing what you are suggesting I can think of is by catching RequiredContentNotPresent inside of a required: false content definition and returning an empty navigator. I think such a catch all behaviour would defeat the purpose of failing fast.
I’m more than happy to mention this behaviour in the manual. Github issues, pull requests and suggestions on wording and placement within the manual are welcome. On Tue, 31 Oct 2017 at 03:12, Samuel Rossinovic <[email protected]> wrote: > Would you consider a request to change that behavior valuable ? > Or possibly just documenting it in the book... > > > On Tuesday, October 31, 2017 at 8:19:49 AM UTC+11, Marcin Erdmann wrote: > >> I wouldn't say that the behaviour you're seeing is intended in a way that >> it was foreseen, but yes, this is how it works, you will need to mark all >> such templates with `required: false` no to get >> RequiredPageContentNotPresent exceptions. >> >> Marcin >> > On Sun, Oct 29, 2017 at 10:34 PM, Samuel Rossinovic <[email protected] >> > wrote: >> > I have a confirmation dialog where I wish to allow for buttons labeled >>> either ‘ok’ or ‘yes’. >>> >>> class Foo extends Module { >>> static content = { >>> button { $("a", text: it) } >>> >>> yes(required: false) {button "Yes" } >>> ok(required: false) {button "OK" } >>> no { button "No" } >>> } >>> >>> def confirm() { (yes ?: ok).click() } >>> } >>> >>> Yet calling confirm() yields a RequiredPageContentNotPresent when the >>> button is labeled ‘ok’. Only when I set require: false on button, does >>> it play well. >>> >>> Is that intended, that enabling optional content would require marking >>> all inherited templates as require:false? >>> Thanks >>> >>> >> -- >>> You received this message because you are subscribed to the Google >>> Groups "Geb User Mailing List" group. >>> >> To unsubscribe from this group and stop receiving emails from it, send an >>> email to [email protected]. >>> To post to this group, send email to [email protected]. >> >> >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/geb-user/aa7231f1-d6ca-4409-9ab9-474214b2a4a1%40googlegroups.com >>> <https://groups.google.com/d/msgid/geb-user/aa7231f1-d6ca-4409-9ab9-474214b2a4a1%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to the Google Groups > "Geb User Mailing List" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/geb-user/bb61e9c7-b7ef-4772-83a5-9db25bf1e3de%40googlegroups.com > <https://groups.google.com/d/msgid/geb-user/bb61e9c7-b7ef-4772-83a5-9db25bf1e3de%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Geb User Mailing List" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/geb-user/CA%2B52dQTCQGiKUXbmNtv9WuaxGrTBwjz%3DvVvpXAMvCd2WntYZCg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
