2009-12-25 7 views
2

jsp에서 EL을 사용하여 인수가 전달 된 bean에서 함수를 호출하려고합니다. 것은 내가 배열을 반복하고있는 모든 값에 대한 함수 certificationFor를 호출 할 것입니다 "$ {teacherBean.certificationFor ($ {particularField})"EL 변수에 액세스하여 EL의 함수에 인수로 전달하는 방법은 무엇입니까?

: 문제는 같은 것을 허용하지 않는 것입니다 배열이 인수로 전달되었습니다. 그래서 기본적으로 내가 좋아하는 것을하고 싶은

: 내가 의해 배열의 값을 얻고있다 $ {teacherBean.certificationFor을 ($ {particularField}) 하지만 난 그렇게하지 못할. 다른 방법으로도이 작업을 수행 할 수 있습니까?

나는 EL에서 초보자입니다. :) 도움을 주시면 감사하겠습니다.

답변

0

무엇에 대해 :

정확히 당신이 그와 무엇을하고 싶어 할
${teacherBean.certificationFor(particularField)} 
4

? 디스플레이에 대한 가치를 얻으려면? 적어도 Java EE 6 이전의 표준 EL에서는 이와 같은 메소드 인수를 전달할 수 없습니다. JBoss-EL 또는 Java EE 6 EL에서 그렇게 할 수 있습니다. 구문은 단지이었을 것입니다 : 당신이하는 EL 표현식이 이미 자신의 전체 표현하지 둥지 EL 표현식입니다 수

${teacherBean.certificationFor(particularField)} 

참고.

그러나 표준 EL 구현에서는 중괄호 표기법을 사용하여 키를 사용하여 Map 값에 액세스 할 수 있습니다.

${teacherBean.certificationFor[particularField]} 

이가 뒤에서 해결 :

private Map<String, String> certifications = new HashMap<String, String>(); 

public Map<String, String> getCertificationFor() { 
    return this.certifications; 
} 

후 다음과 같은 표기법을 사용할 수 있습니다 따라서, 당신이 경우 예를 들어 키가 particularField에 해당하고, 값 관련 값이 Map<String, String> certifications이 있습니다

teacherBean.getCertificationFor().get(particularField) 
1

표준 EL에서는 EL 함수로 정의 된 함수를 정의하는 것 외에 다른 옵션이 없다고 생각합니다.

읽기 : 문서 하단의 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html;

하지만

앱 당신은 더 나은 별도의 함수로 표현되는 일반적인 기능에 액세스하는 경우

0

에 의존의 종류를 추가 할 수있는 기능이있는 경우 다른 EL의 implmentation를 사용할 수 있다면 BalusC 이미 언급 한 바와 같이,

${certificationFor[teacherBean][particularField]} 

을 certificationFor이 ELMethod.java 클래스를 확장 CertificationFor 클래스에 매핑 여기서 다음과 같이 당신은 그것을 쓸 수 있습니다. result(Object[] args) 메서드의 기능을 구현합니다. 이 메소드에 대한 args는 EL에서 ${certificationFor} 오브젝트로 전달한 args입니다.

public class CertificationFor extends ELMethod { 
    public Object result(Object[] args) { 
    TeacherBean teacherBean = (TeacherBean) args[0]; 
    String property = (String) args[1]; 

    // your implementation goes here 
    return ....; 
    } 
} 

트릭은지도의 체인 맵으로 개체를 사용하는 것입니다, 그 EL 기능에 여러 인수를 전달하는 한 가지 방법입니다. 당신이 관심이 있다면, 당신은 전체 코드와 코드를 볼 수 있습니다

여기 니펫 : http://www.vineetmanohar.com/2010/07/how-to-pass-parameters-in-el-methods/