2012-05-02 4 views
4

내 JSF 1.2 프로젝트에서 페이스 렛 태그 파일을 작성하고 backing bean 메소드 이름을 전달해야하는 actionListener 속성이있는 inputText를 정의했습니다. 태그 파일에 변수 actionListener = "# {actionListener}"를 정의하려고했습니다. 내가빈 작업을 Facelet 태그 파일에 전달

로 값을 전달할 때이 구성 요소를 호출 내 XHTML에서
actionListener="#{myBean.preFillData}" 

태그 파일 속성으로 처리하고 프로퍼티 'preFillData'를 찾을 수 없음을 나타내는 오류가 부족합니다. 내가

actionListener="#{myBean.preFillData()}" 

로 변경하는 경우는 메소드 이름을 표시하기 위해 괄호처럼 doesnot 때문에 다음 태그 파일에서 구문 분석 오류가있다.

메소드 이름을 태그 파일로 전달하는 방법은 무엇입니까?

감사 PT

답변

4

전달 방법 식은 태그 파일에서 지원되지 않습니다. JSF 2.0 이후부터는 소위 복합 컴포넌트를 사용하여 가능합니다.

빈 참조와 메소드 이름을 분리하여 중괄호 표기법을 사용하여 메소드를 호출 할 수 있습니다. 나는 그게 actionListener에 대해 잘 작동하는지 잘 모르겠다. 보통 동작을 호출하는 데 사용하지는 않지만, 확실히 action에 대해 작동해야한다.

예. 내부 tag.xhtml 당신이 Facelets의에 JSF 2.0을 사용하는 일 경우에만

<h:commandButton ... action="#{bean[actionMethod]}" /> 

<my:tag ... bean="#{myBean}" actionMethod="preFillData" /> 

, 당신은 태그 파일에 메서드 식을 전달하는 <o:methodParam>를 사용할 수 있습니다. a.o를 참조하십시오. Dynamic ui include and commandButton.

+0

감사합니다. @Balusc. JSF 1.2와 업그레이드해야 할 mroe의 한계를 아는 것이 좋습니다. – phewataal

+0

actionListener에 대한 귀하의 의견에 대해 액션을 호출하는 데 일반적으로 사용되지는 않지만 두 개의 텍스트 상자 값 (우편 번호 및 확장자)을 단일 속성으로 통합해야하는 경우가 있습니다. 내 도메인 객체에서 내 동작으로 저장을 호출하기 전에. 이 통합도 actionListener 대신 action 메소드에서 수행해야합니까? – phewataal

+0

아, 그 말이 맞습니다. 그런데 태그 파일에서 직접 선언하지 않으시겠습니까? 그것은 반드시 bean 메소드를 참조 할 필요가없는 재사용 가능한'ActionListener' 구현 인 것 같습니다. – BalusC