2011-09-26 2 views
8

다음 예제 : 나는 struts 액션을위한 수퍼 클래스와 서브 클래스를 가지고 있습니다. 수퍼 클래스가 @Results을 정의하고 서브 클래스가 을 추가로 정의해야합니다. 특정 @Result 항목을 정의해야합니다. 예를 들어 :Struts2 결과 주석이 수퍼 클래스 정의 값을 대체하거나 추가합니까?

@Results({ 
    @Result(name=BaseAction.ERROR, location="/WEB-INF/jsp/error.jsp") 
}) 
public abstract class BaseAction extends ActionSupport implements ServletRequestAware { 
    ... 
} 

.. 그리고 서브 클래스 내 질문은

@Results({ 
    @Result(name=BaseAction.INDEX, location="/WEB-INF/jsp/reporting/index.jsp") 
}) 
public class ReportAction extends BaseAction { 
    ... 
} 

INDEX@Result 정의가 ReportAction 의 인스턴스를 수행하거나, 또한 정의 된 @Result 항목이 포함되어 있습니까 슈퍼 클래스라면 어떤 것이 든 있습니다. 내 ReportActionBaseAction.ERROR에 설정된 위치를 알고 있습니까?

감사합니다, 마틴

+2

네, 당신은 옳은 일을했습니다. 'ReportAction'은'ERROR'와'INDEX' 두 결과를 포함합니다. ** [이 답변] (http://stackoverflow.com/questions/6765810/struts2-convention-plugin-results-using-inheritance/6770638#6770638) **을 살펴보십시오. 그리고 ** [Config Browser Plugin] (http://struts.apache.org/2.2.3.1/docs/config-browser-plugin.html) **에 의해'result mappings'을 확인해보십시오. – lschin

답변

1

예, ReportAction 클래스에는 BaseAction.INDEX와 BaseAction.ERROR가 모두 있습니다.

일반적인 수퍼 클래스 또는 하위 클래스 규칙이이 경우에도 적용됩니다. 하위 클래스에서 무언가를 찾지 못하면 상위 클래스를 살펴 봅니다.

하위 클래스에서 BaseAction.ERROR를 찾을 수 없으면 상위 클래스를 살펴 봅니다.

0

그것은 모두있을 것이다. 설정 브라우저 플러그인으로 확인할 수 있습니다.

0

BaseAction.INDEX 및 BaseAction.ERROR를 모두 식별 할 수 있습니다.

결과가 Subclass (귀하의 경우 ReportAction 클래스)에서 사용 가능하면 그 결과를 따르고 그렇지 않으면 수퍼 클래스 (BaseAction 클래스에서)를 볼 것입니다.

관련 문제