2013-05-03 2 views
0

EL이 속성 이름을 목록 색인으로 해석하려고 시도하고 실패합니다. List의 일반적인 bean 프라퍼티가 존재한다면 그것들에 접근하는 방법은 무엇입니까? 이 클래스는 모두 목록 및 개별 특성을 가지고시피Spring EL에서 목록의 속성에 액세스하는 방법은 무엇입니까?

UPDATE 나는 내 자신의 클래스

public class Directory extends AbstractList<File> { 

    ... 

    public Date getInternetLastModified() { 
     return internetLastModified; 
    } 

했다.

나는 XML에 쓴 경우 : 내가 NumberFormatException을 얻고 있었다

${directory.internetLastModified} 

. 객체가 List이므로 EL은 다음과 같은 것을하려고 시도하고 있다고 해석했습니다.

out.print(directory.get(String.valueOf("internetLastModified")) 

그래서이 질문을하게됩니다.

+0

나는 당신을 얻지 못합니다. 모델에서 목록 항목을 인쇄하려고합니까? –

+0

어떻게 액세스하고 있습니까? – Kai

+0

목록에서 얻으려고하는 것을 보여 줄 수 있습니까? – Xenson

답변

0

internetLastModified가 인스턴스 메소드라고 가정하고 단순한 디렉토리 클래스를 생성하고 SpelExpressionParser를 시도하여 어떤 일이 발생했는지 확인했습니다. 디렉토리가 빈 당신이 표현으로 "@directory.internetLastModified"를 사용할 필요가 무엇을 생각하는 경우

public class DirectoryExamplesMain { 

    public static final void main(String[] args) { 
     ExpressionParser parser = new SpelExpressionParser(); 
     org.springframework.expression.Expression exp = null; 

     Directory dir = new Directory(); 

     // Literal 
     exp = parser.parseExpression("internetLastModified"); 
     Date d = exp.getValue(dir, Date.class); 
     System.out.format("internetLastModified", d); 


    } 
} 

는 그리고 내가 가진 결과는 internetLastModified [Fri May 03 15:40:44 CDT 2013]

했다. 참조 설명서 섹션 7.5에서 이와 같은 예제를 찾을 수 있습니다.

다음은 쉬운 테스트 방법입니다.

import java.util.Date; 

import org.springframework.expression.AccessException; 
import org.springframework.expression.BeanResolver; 
import org.springframework.expression.EvaluationContext; 
import org.springframework.expression.ExpressionParser; 
import org.springframework.expression.spel.standard.SpelExpressionParser; 
import org.springframework.expression.spel.support.StandardEvaluationContext; 

public class DirectoryExamplesMain { 

    public static final void main(String[] args) { 
     final ExpressionParser parser = new SpelExpressionParser(); 

    // Bean references 
    final StandardEvaluationContext context = new StandardEvaluationContext(); 
    context.setBeanResolver(
     new BeanResolver() { 
     @Override 
     public Object resolve(EvaluationContext arg0, String arg1) 
      throws AccessException { 
      return new Directory(); 
    }}); 

    System.out.format("%s [%s]%n","@directory.internetLastModified", parser.parseExpression("@directory.internetLastModified").getValue(context)); 
} 
관련 문제