我是stripes的新手,所以很抱歉,如果这是一个简单的问题,现在我有这个课程:
....
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.DontValidate;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.HandlesEvent;
import net.sourceforge.stripes.action.RedirectResolution;
import net.sourceforge.stripes.action.Resolution;
import net.sourceforge.stripes.action.UrlBinding;
import net.sourceforge.stripes.integration.spring.SpringBean;
import net.sourceforge.stripes.validation.ValidationMethod;
import net.sourceforge.stripes.validation.ValidationState;
@UrlBinding("/role/{$event}")
public class RoleActionBean extends BaseActionBean {
@DefaultHandler @DontValidate
@HandlesEvent("add")
public Resolution listrole() {
...
return new ForwardResolution("/jsp/role/list.jsp");
}
@HandlesEvent("add") @DontValidate
public Resolution addrole() {
...
return new ForwardResolution("/jsp/role/add.jsp");
}
@HandlesEvent("save")
public Resolution saverole()
{
...
}
@HandlesEvent("view") @DontValidate
public Resolution viewrole() {
...
}
@HandlesEvent("edit") @DontValidate
public Resolution editrole() {
...
}
@HandlesEvent("update")
public Resolution updaterole() {
...
}
@HandlesEvent("delete")
public Resolution deleterole() {
...
}
@ValidationMethod(on={"save", "update"}, when=ValidationState.ALWAYS)
public void validarDatosrole(){
...
}
@ValidationMethod(on={"save", "update"}, when=ValidationState.ALWAYS)
public void validarDatosrole2(){
...
}
...
}但当我尝试访问url的ActionBean时:
/role/add
或者任何其他事件,我得到了404,我正在尝试获得更干净的URL,以便在我使用它之前,可以更容易地限制用户可以使用spring安全性的操作:
@UrlBinding("/role.html")然后转到URL:
role.html?add
我不知道我做错了什么,请帮助我,提前谢谢。
发布于 2016-05-27 21:56:04
我相信这是因为您对add事件有两个处理程序方法。这会导致条带无法启动,并出现以下异常(然后使用404响应所有请求,因为servlet无法启动)
2016-05-27 08:53:22,850 FATAL {main} [] net.sourceforge.stripes.controller.StripesFilter Could not instantiate specified Configuration. Class name specified was [net.sourceforge.stripes.config.RuntimeConfiguration].
net.sourceforge.stripes.exception.StripesRuntimeException: Problem instantiating default configuration objects.
at net.sourceforge.stripes.config.DefaultConfiguration.init(DefaultConfiguration.java:210)
at net.sourceforge.stripes.config.RuntimeConfiguration.init(RuntimeConfiguration.java:276)
at net.sourceforge.stripes.controller.StripesFilter.createConfiguration(StripesFilter.java:137)
at net.sourceforge.stripes.controller.StripesFilter.init(StripesFilter.java:103)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:298)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:119)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4076)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4730)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:759)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: net.sourceforge.stripes.exception.StripesRuntimeException: Could not instantiate configured ActionResolver of type [UIActionResolver]. Please check the configuration parameters specified in your web.xml.
at net.sourceforge.stripes.config.RuntimeConfiguration.initializeComponent(RuntimeConfiguration.java:257)
at net.sourceforge.stripes.config.RuntimeConfiguration.initActionResolver(RuntimeConfiguration.java:119)
at net.sourceforge.stripes.config.DefaultConfiguration.init(DefaultConfiguration.java:102)
... 20 more
Caused by: net.sourceforge.stripes.exception.StripesRuntimeException: The ActionBean class example.site.actions.help.RecordsAction declares multiple event handlers for event 'add'
at net.sourceforge.stripes.controller.AnnotatedClassActionResolver.processMethods(AnnotatedClassActionResolver.java:233)
at net.sourceforge.stripes.controller.AnnotatedClassActionResolver.addActionBean(AnnotatedClassActionResolver.java:152)
at net.sourceforge.stripes.controller.AnnotatedClassActionResolver.init(AnnotatedClassActionResolver.java:119)
at net.sourceforge.stripes.controller.NameBasedActionResolver.init(NameBasedActionResolver.java:125)
at net.sourceforge.stripes.config.RuntimeConfiguration.initializeComponent(RuntimeConfiguration.java:253)
... 22 more发布于 2016-06-12 23:52:46
dhensche是正确的,您在发布的代码中有太多的添加处理程序。
如果我们假设这只是一个复制错误,并且您的ActionBean在您的UrlBinding更改之前是可用的,我认为您可能想要查看您的servlet映射配置。
由于您的链接将不再包含".action",web请求可能不知道如何到达StripesDispatcher,这就是为什么您将收到404响应。
这篇博客文章有一个你想要做的事情的详细例子:Clean and usable URLs in Stripes
此外,您可能想要考虑命名解析方法以匹配它们处理的事件,并丢弃HandlesEvent注释。那么就不可能意外地定义重复的处理程序。
https://stackoverflow.com/questions/37060638
复制相似问题