Как я могу вызвать метод "execute" для Action, перенаправленного из другого действия в Struts 2?

У меня проблема с перенаправлением с одного действия на другое в стойках 2.

В первом действии (называемом: StudentZuPruefungHinzufuegen) я создаю ошибки действия и хочу показать их в действии два (называемое:ZeigePruefungsliste).

Если я просто использую "redirectAction" из Struts, он показывает правильную ошибку действия в том месте, где я хотел ее показать. Проблема в том, что фреймворк не вызывает мой метод execute до отображения страницы результатов с ошибками действия. Хотя таблица, которую я заполняю в моем методе execute, пуста, и получающаяся страница фактически бесполезна.

Может кто-нибудь сказать мне, как я могу сказать Struts, чтобы вызвать метод при перенаправлении на действие два?

Мой struts.xml выглядит так:

<action name="ZeigePruefungsliste"
class="de.nak.multiplechoice.action.ZeigePruefungslisteAction">
    <interceptor-ref name="store">
        <param name="operationMode">RETRIEVE</param>
    </interceptor-ref>
    <interceptor-ref name="defaultLoginStack" />
    <result type="tiles" name="*">pruefungsListe</result>
</action>

<action name="StudentZuPruefungHinzufuegen"
class="de.nak.multiplechoice.action.EditiereTeilnehmerAction">
    <result type="tiles">studentZuPruefungHinzufuegen</result>
    <interceptor-ref name="store">
        <param name="operationMode">STORE</param>
    </interceptor-ref>
    <interceptor-ref name="defaultLoginStack" />
    <result name="input" type="redirectAction">
        <param name="actionName">
            ZeigePruefungsliste
        </param>
    </result>
</action>

РЕДАКТИРОВАТЬ: код моих классов действий.

public class EditiereTeilnehmerAction extends AbstractAction {

private static final long serialVersionUID = 882657701678551299L;

private Long ausgewaehltePruefungId;

private List<Nutzer> studenten;

private List<Long> ausgewaehlteStudenten;

@Override
public String execute() {
    if (ausgewaehltePruefungId == null) {
        addActionError("Es muss eine Prüfung ausgewählt werden.");
        return INPUT;
    }
    studenten = getNutzerService().ladeAlleStudenten();
    return SUCCESS;
}

public String zuPruefungHinzufuegen() {
    getPruefungService().registriereStudentenFuerPruefung(ausgewaehltePruefungId, ausgewaehlteStudenten);
    return SUCCESS;
}

public List<Nutzer> getStudenten() {
    return studenten;
}

public void setStudenten(List<Nutzer> studenten) {
    this.studenten = studenten;
}

public Long getAusgewaehltePruefungId() {
    return ausgewaehltePruefungId;
}

public void setAusgewaehltePruefungId(Long ausgewaehltePruefungId) {
    this.ausgewaehltePruefungId = ausgewaehltePruefungId;
}

public List<Long> getAusgewaehlteStudenten() {
    return ausgewaehlteStudenten;
}

public void setAusgewaehlteStudenten(List<Long> ausgewaehlteStudenten) {
    this.ausgewaehlteStudenten = ausgewaehlteStudenten;
}

}

public class ZeigePruefungslisteAction extends AbstractAction {

private static final long serialVersionUID = -7559234907568287686L;
private List<Pruefung> pruefungen;

@Override
public String execute() {
    pruefungen = getPruefungService().getAllePruefungen(getAktuellenNutzer());
    return SUCCESS;
}

public List<Pruefung> getPruefungen() {
    return pruefungen;
}

}

public abstract class AbstractAction extends ActionSupport {

private static final long serialVersionUID = -6905222101893534102L;

private INutzerService nutzerService;

private IPruefungService pruefungService;

public HttpSession getHttpSession() {
    HttpServletRequest request = (HttpServletRequest) ActionContext
        .getContext().get(StrutsStatics.HTTP_REQUEST);
    return request.getSession(true);
}

public Nutzer getAktuellenNutzer() {
    return nutzerService.get(((Nutzer) getHttpSession().getAttribute(
        StrutsKonstanten.NUTZER)).getId());
}

protected INutzerService getNutzerService() {
    return nutzerService;
}

public void setNutzerService(INutzerService nutzerService) {
    this.nutzerService = nutzerService;
}

protected IPruefungService getPruefungService() {
    return pruefungService;
}

public void setPruefungService(IPruefungService pruefungService) {
    this.pruefungService = pruefungService;
}

}

Привет, Маркус

0 ответов

Другие вопросы по тегам