2012-04-18 2 views
2

JSF 메소드에 매개 변수를 전달하는 방법을 묻는 몇 가지 질문이 있습니다. EL2.2와 서블릿 3.0을 사용하면 매개 변수를 메소드 호출에 전달할 수 있습니다. 한 예 : How to pass an argument to method from rendered h:outputText? 질문 : JSF 2.x에서 각 태그 속성은 ValueExpression 또는 MethodExpression 중 하나를 취합니다. 링크 된 예제에서 "rendered"는 ValueExpression 만 가져야합니다. 그러나 그것은 MethodExpression과 함께 작동하는 것을 볼 수 있습니다.()를 사용하면 속성 대신 메서드 호출임을 알 수 있습니다. JSF 2.x 스펙이 엉망이거나 뭔가 놓치고있는 것입니까?EL 2.2가있는 JSF 2.x에서 ValueExpression을위한 MethodExpression이 어떻게 가능합니까?

답변

1

값 표현식에 새로운 EL 2.2 호출 메소드와 구문을 사용한다고해서 자동으로 메소드 표현식이되는 것은 아닙니다. 그것은 여전히 ​​가치있는 표현입니다. 값 표현식은 주어진 EL 표현식의 리턴 값을 값으로 사용합니다. 메소드 표현식은 구성 요소와 연관된 조치 이벤트에서 제공된 EL 표현식을 호출합니다.

EL 자체가 속성 getter 메서드를 호출하는지 또는 인수가있는 임의의 메서드를 실제로 호출할지 여부는 전체 EL 표현식이 어떻게 처리되는지에 관계 없습니다.

+0

BalusC, 빠른 응답을 부탁드립니다. JSF 블로그를 즐겼으며 많은 도움이되었습니다. 당신의 대답은 이치에 맞습니다. 그러나 나는 아직도 혼란을 겪고있다. EL (예 : JSF 2.x)을 사용하는 기술은 EL이 ValueExpression 또는 MethodExpression으로 처리되는지 여부를 결정합니다. 따라서 JSF action 속성의 경우 action = "aBean.aMethod()"를 사용하고 aMethod가 리터럴 문자열 "aBean.action"을 반환하면 aBean의 액션 메소드가 호출 될 것입니까? EL 표현식에서 나에게 들리는 소리는 JSF의 메커니즘 전에 항상 먼저 호출됩니다. EL에()이 있으면 getter를 사용하지 않고 대신 메소드를 호출합니다. –

+0

아니요, 속성별로 속성을 결정하는 태그 핸들러입니다. [태그 설명서] (http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/)에서 처리 방법 ("type"열을 확인하십시오. 예를 들어 [ 'h : commandButton'] (http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/facelets/h/commandButton.html)). 이것은 어떤 식 으로든 EL 구문에 의존하지 않습니다. – BalusC

+0

동의 함, 태그 처리기가이를 결정합니다. 그러나 태그 핸들러는 JSF 구현에서 비롯됩니다. 따라서 JSF가이를 결정합니다. 난 그냥 preivous 의견을 수정. 시간이 있다면, 정교 할 수 있니? 감사. –