2011-09-26 11 views
8

Następujący przykład: Posiadam nadklasę i podklasę dla akcji rozpórki. Klasa nadrzędna definiuje @Results, a podklasa musi definiować dodatkowe określone wpisy . Na przykład:Czy adnotacje wyników Struts2 zastępują lub dodają do nadklasy zdefiniowane wartości?

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

..i podklasą

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

Moje pytanie brzmi, czy wystąpienie ReportAction tylko mają @Result z INDEX zdefiniowane, czy również zawierać żadnych @Result wpisy zdefiniowane w każdym, jeśli to superklasy. Czy mój numer ReportAction jest świadomy lokalizacji ustawionej na BaseAction.ERROR?

Dzięki Martin

+2

Tak, postąpiłeś słusznie. "ReportAction" zawiera zarówno wyniki "ERROR" i "INDEX". Możesz rzucić okiem na ** [THIS answer] (http://stackoverflow.com/questions/6765810/struts2-convention-plugin-results-using-initance/6770638#6770638) **. A dlaczego nie sprawdzasz "mapowania wyników" przez ** [Config Browser Plugin] (http://struts.apache.org/2.2.3.1/docs/config-browser-plugin.html) **. – lschin

Odpowiedz

1

Tak, klasa ReportAction będzie miała zarówno wartość BaseAction.INDEX, jak i wartość BaseAction.ERROR.

W tym przypadku zastosowanie ma również ogólna zasada dotycząca klasy lub klasy podrzędnej. Jeśli nie znajdziesz czegoś w swojej podklasie, przejdzie do super klasy.

W twoim przypadku nie znaleziono klasy BaseAction.ERROR w Twojej podklasie i zajrzysz do nadklasy.

0

Będzie mieć oba. Możesz to sprawdzić za pomocą wtyczki do przeglądarki konfiguracji.

0

Będzie w stanie zidentyfikować zarówno BaseAction.INDEX, jak i BaseAction.ERROR.

Jeśli wynik jest dostępny w podklasie (w twojej klasie ReportAction), to będzie następował, w przeciwnym razie będzie wyglądał w superklasie (w twoim przypadku klasa BaseAction).