Scope implicit objects can save you

If all you need is to print the name of a person, and you really don’t care what scope the person is in (or, you do care, but you know there’s only one person out of all four scopes), you just use:

${person.name}
image with no caption

Or, if you’re worried about a potential naming conflict, you can be explicit about which person you want:

${requestScope.person.name}

But is there another reason you might have to preface the attribute with the implicit scope object? Other than to control...scoping?

Think about this scenario: if you have a name that’s not in quotes in brackets [ ], that means it MUST adhere to Java naming rules, right? Here, we’re OK, because person is a perfectly legal Java variable name. But that’s because somewhere, someone said,

request.setAttribute("person", p);

But an attribute name is a String!

Strings don’t follow Java variable name rules!

That means someone could say:

request.setAttribute("foo.person", p);

And then you’d be in trouble, because THIS won’t work:

image with no caption

But you’ll be so thankful for scope objects, because using a scope object lets you switch to the [ ] operator, that can take String names that don’t conform to Java naming rules.

image with no caption
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset