簡體   English   中英

Struts2 約定插件結果使用 Inheritance

[英]Struts2 Convention Plugin Results Using Inheritance

有沒有辦法讓 struts2 約定插件使用超級 class 的結果?

我正在嘗試創建一個通用 CRUD,如果子 class 中沒有實現,則使用通用結果。 這可能嗎?

是的你可以。

例如:

一般 CRUD

@Results({
        @Result(name = "input", location = "input.jsp"),
        @Result(location = "input.jsp")
})
public abstract class CrudActionSupport extends ActionSupport {

    @Action("update/{entityId}") // wildcard mapping
    public String actionUpdate() {
        return SUCCESS;
    }
}

行動

public class PersonAction extends CrudActionSupport {

}

CrudActionSupport處的注釋將始終有效,除非它在子類中被覆蓋。

例如

@Results({
        @Result(name = "input", location = "person.jsp"),
        @Result(location = "person.jsp")
})
public class PersonAction extends CrudActionSupport {

    @Override
    public String actionUpdate() {
        return SUCCESS;
    }

    // or 

    /*

    @Action("update/{id}")
    @Override
    public String actionUpdate() {
        return SUCCESS;
    }

    */
}

它不是 Struts2 的設施。 可以建造這樣的設施,但還有其他方法可以產生您正在尋找的效果。

我建議此時使用通配符映射。 它可以做您需要的事情,並且可以與約定插件很好地配合使用(struts.xml 規則優先於約定)。 特定於操作的注釋或 xml 優先於通配符映射。 換句話說,它按照您期望的方式工作,只需嘗試一下。

這樣的事情真的是我發帖的原因: Is it possible to use wildcard method invocation in Struts2 with conventions plugin using only annotations? 雖然我在想也許 package 級別的注釋可以完成通配符的工作。 無論如何,最終結果將類似於您想要對超類執行的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM