使用inheritance的Struts2 Convention插件结果

有没有办法让struts2约定插件使用超类的结果?

我正在尝试创建一个通用的CRUD,如果子类中没有实现,则使用一般结果。 这可能吗?

是的你可以。

举个例子:

一般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的工具。 可以建造这样的设施,但是还有其他方法可以产生您正在寻找的效果。

我建议此时使用通配符映射。 它可以做你需要的,它可以很好地使用convention插件(struts.xml规则优先于约定)。 特定于操作的注释或xml优先于通配符映射。 换句话说,它的工作方式与您期望的一样,只需尝试一下即可。

这样的事情真的是我发布的原因: 是否可以在Struts2中使用通配符方法调用仅使用注释的约定插件? 虽然我想的可能是包含级别的注释,它可以完成外卡的工作。 无论如何,最终结果将类似于你想要用超级类做的。