首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条带不将事件与{$event}绑定

条带不将事件与{$event}绑定
EN

Stack Overflow用户
提问于 2016-05-06 05:32:44
回答 2查看 393关注 0票数 0

我是stripes的新手,所以很抱歉,如果这是一个简单的问题,现在我有这个课程:

代码语言:javascript
复制
 ....
 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安全性的操作:

代码语言:javascript
复制
@UrlBinding("/role.html")

然后转到URL:

role.html?add

我不知道我做错了什么,请帮助我,提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-05-27 21:56:04

我相信这是因为您对add事件有两个处理程序方法。这会导致条带无法启动,并出现以下异常(然后使用404响应所有请求,因为servlet无法启动)

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2016-06-12 23:52:46

dhensche是正确的,您在发布的代码中有太多的添加处理程序。

如果我们假设这只是一个复制错误,并且您的ActionBean在您的UrlBinding更改之前是可用的,我认为您可能想要查看您的servlet映射配置。

由于您的链接将不再包含".action",web请求可能不知道如何到达StripesDispatcher,这就是为什么您将收到404响应。

这篇博客文章有一个你想要做的事情的详细例子:Clean and usable URLs in Stripes

此外,您可能想要考虑命名解析方法以匹配它们处理的事件,并丢弃HandlesEvent注释。那么就不可能意外地定义重复的处理程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37060638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档