2016-05-05 7 views
0

Ich bin neu zu streifen, so tut mir leid, wenn es sich um eine einfache Frage ist, gerade jetzt habe ich diese Klasse:

.... 
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(){ 
     ... 
    } 

    ... 
} 

Aber als ich versuchen, Zugriff auf die ActionBean auf die URL:

/Rolle/add

oder andere der Ereignisse, ich die 404 bekommen, ich versuche, mehr saubere URL zu erhalten, so dass es leichter sein wird, schränken Sie die Benutzer ein, welche Tätigkeit mit Frühlingssicherheit verwenden kann, bevor ich es mit arbeiten lasse:

@UrlBinding("/role.html") 

und an die URL gehen:

role.html hinzufügen

Ich bin nicht sicher, was ich falsch mache, bitte helfen Sie mir, danke im voraus?.

Antwort

0

Ich glaube, es liegt daran, dass Sie zwei Handler-Methoden für das add Ereignis haben. Dies bewirkt, dass Streifen mit folgenden Ausnahme die Inbetriebnahme scheitern

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

dhensche korrekt (und dann mit einem 404 auf alle Anforderungen zu reagieren, weil das Servlet starten nicht), ist, dass Sie zu viele hinzufügen Handler in der Code, den Sie gepostet haben.

Wenn wir davon ausgehen, dass es sich nur um einen Kopierfehler handelt und Ihre ActionBean vor der Änderung von UrlBinding verwendet werden konnte, sollten Sie sich die Konfiguration des Servlet-Mappings ansehen.

Da Ihr Link keine ".action" mehr enthält, wissen Webanfragen möglicherweise nicht, wie Sie den StripesDispatcher erreichen können. Deshalb erhalten Sie eine 404-Antwort.

Dieser Blog-Eintrag hat ein ausführliches Beispiel, was Sie versuchen zu tun: Auch Clean and usable URLs in Stripes

, könnten Sie Ihre Lösungsmethoden zu prüfen, die Benennung der Ereignisse, die sie handhaben entsprechen, und die HandlesEvent Anmerkungen Notwasserung. Dann ist es nicht möglich, doppelte Handler versehentlich zu definieren.