2013-02-12 1 views
1

내 jsp에서 상수 인터페이스에 액세스하려고하는데 다음 오류가 표시됩니다.jsp에서 자바 인터페이스에 액세스하는 방법

Caused by: tag 'select', field 'list', name 'title': 
The requested list key 'Constants.TITLE' 
could not be resolved as a collection/array/map/enumeration/iterator type. 
Example: people or people.{name} - [unknown location] 

내 인터페이스

public interface Constants { 
    public List<String> TITLE = Arrays.asList("Mr","Mrs","Ms","Miss"); 
    // public String[] TITLE = {"MR","MRs"}; << does not work as well 
    //public static final String[] TITLE = {"MR","MRs"}; << does not work as well 
} 

내 JSP로 코드

... 
<%@page import="com.myconstants.Constants" %> 
<head> 
</head> 
<body> 
    <s:form> 
    <s:select label="title" name="title" list="Constants.TITLE" value=" "/> 
    </s:form> 
.... 
+0

음, 그러지 마십시오. 클래스에 넣고 정적 인 값으로 표시하는 것이 중요합니다. –

+1

@DaveNewton, 나는 당신에게 내게 모범을 보이지 않을 것인가? –

답변

2

하는 클래스를 확인합니다. 목록에 클래스를 넣으십시오. 나는 이런 식으로 할겠습니까

<s:select key="title" list="@[email protected]" /> 

: 정상 OGNL 정적 속성 액세스를 사용? 아마도 그렇지 않다. JSP로 찾기/리팩터링을 더 어렵게 만드는 (IDE에 따라 다름). 일반적으로 액션의 서비스/레이어를 통해 뷰 레이어에 데이터를 노출하는 것이 좋습니다.

+1

서비스/계층 별은 작업/컨트롤러를 사용하여 데이터를보기로 보냅니다. 서버에 요청을 보내고 응답을 받아야하므로 응용 프로그램의 성능에 영향을 미치지 않습니까? –

+0

동일한 오류가 발생했습니다. –

+0

@DanielMorgan 죄송합니다. 상수가 실제로 OGNL ** 정적 ** 속성 액세스 구문의 역할을하는 클래스 (즉, public static final)의 상수라고 가정했습니다. 나는 여전히 그렇게하지 않을 것이지만, 당신이 그것을 상수로 원한다면 그것은 가장 적절할 것입니다. 그러나 인터페이스의 IMO 값은 안티 패턴 상태로 떨어졌습니다. –

관련 문제