有没有办法让struts2约定插件使用超类的结果?
我正在尝试创建一个通用CRUD,如果子类中没有实现,则使用一般结果。这可能吗?
答案 0 :(得分:1)
是的,你可以。
举个例子:
一般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 的注释将始终有效,除非它在子类中被覆盖。
e.g。
@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;
}
*/
}
答案 1 :(得分:0)
它不是Struts2的功能。可以建造这样的设施,但是还有其他方法可以产生您正在寻找的效果。
我建议您此时使用通配符映射。它可以做你需要的,它可以很好地使用convention插件(struts.xml规则优先于约定)。特定于操作的注释或xml优先于通配符映射。换句话说,它的工作方式与您期望的一样,只需尝试一下即可。
这样的事情真的是我发布的原因:Is it possible to use wildcard method invocation in Struts2 with conventions plugin using only annotations?虽然我想的是也许包装级注释可以完成外卡的工作。无论如何,最终结果将类似于你想要用超级类做的事情。