Почему JSF 2.x с EL 2.2 позволяет использовать MethodExpression для ValueExpression?

Я вижу несколько вопросов, спрашивающих, как передать параметры в методы JSF. С EL2.2 и сервлетом 3.0 он позволяет пользователю передавать параметры в вызов метода. Один пример: как передать аргумент методу из визуализированного h:outputText? Вопрос в том, что в JSF 2.x каждый атрибут тега должен принимать значение ValueExpression или MethodExpression. В связанном примере "render" должен принимать только ValueExpression. Однако я вижу, что он все еще работает с MethodExpression, если мы поставим (), чтобы было ясно, что это вызов метода, а не свойства. Это спецификация JSF 2.x только что испортила или я что-то упустил?

1 ответ

Решение

Использование нового синтаксиса invoking-method-with-arguments EL 2.2 в выражении значения автоматически не делает его выражением метода или чем-то еще. Это все еще выражение ценности. Выражение значения использует возвращаемое значение данного выражения EL в качестве значения. Выражение метода вызывает данное выражение EL при событии действия, связанном с компонентом.

Вызывает ли выражение EL сам по себе метод получения свойства или произвольный метод с аргументами, на самом деле не имеет значения, как обрабатывается выражение EL в целом.

Другие вопросы по тегам