Well, we do know the predefined objects:

pageContext
servletContext
session
request
response
param
paramValues
header
headerValues
cookie
initParam
pageScope
requestScope
sessionScope
applicationScope
facesContext
view

Plus in Trinidad
requestContext
pageFlowScope/processScope

All of these are bad news.  It wouldn't be too rough to
have a little trinidad-impl Set<String> of these, check
against it in all the renderers + tags that expose "var" or
"varStatus" and log a warning.  Not 100% bulletproof, but it'd
save someone a day of debugging some day.

-- Adam



On 8/1/07, Simon Lessard <[EMAIL PROTECTED]> wrote:
> That's a nice issue, and we have no way to provide all the reserved names
> either... I guess the best we could do is alter the parameter description to
> mention that it must not take the value of any predefined object and should
> not take the name of a managed bean either.
>
> Anyone see a better solution for this?
>
>
> Regards,
>
> ~ Simon
>
>
> On 8/1/07, Renzo Tomaselli < [EMAIL PROTECTED]> wrote:
> > Hi, I just discovered that there are a number of names which cannot be
> > used for binding iterating component variables - such as in tr:table.
> > In short, I needed to render a set of parameters in a tr:table, so that
> > it seemed obvious to me setting var="param".
> > But the table was rendered empty, event if I have some other similar
> > examples running fine.
> > It took an entire day of hard debugging to discover that in
> > org.apache.myfaces.el.VariableResolverImpl there are
> several "trapping"
> > names - "param" among the others. They prevent regular binding
> > resolution, although no error is reported. Replacing "param" by anything
> > else made the table being rendered fine.
> > Just sharing to avoid anybody else to fall into the same trouble.
> >
> > -- Renzo
> >
> >
>
>

Reply via email to