2016-05-05 2 views
0

Я новичок в полоску, так что я извиняюсь, если это простой вопрос, прямо сейчас у меня есть этот класс:

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

    ... 
} 

Но когда я попробуйте, доступ к ActionBean к URL:

/роль/добавить

Или любые другие события, я получаю 404, я пытаюсь получить более чистый URL, так что будет более легко ограничьте пользователей, действие которых может использоваться с весной безопасности, прежде чем я буду работать с:

@UrlBinding("/role.html") 

и идти к URL:

role.html добавить

Я не уверен, что я делаю не так, пожалуйста, помогите мне, спасибо заранее?.

ответ

0

Я считаю, что это потому, что у вас есть два метода обработчика для события add. Это приводит полосы к сбою в автозагрузку со следующим исключением (а затем отвечать на все запросы с 404, потому что сервлет не удалось запустить)

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 правильно, что у вас слишком много добавить обработчики в код, который вы опубликовали.

Если мы предположим, что это только ошибка копирования, и ваш ActionBean можно использовать до изменения UrlBinding, я думаю, вы можете посмотреть конфигурацию отображения сервлета.

Поскольку ваша ссылка больше не будет содержать «.action», веб-запросы могут не знать, как добраться до StripesDispatcher, и именно поэтому вы получаете ответ 404.

Этот блог есть подробный пример того, что вы пытаетесь сделать: Clean and usable URLs in Stripes

Кроме того, вы можете рассмотреть вопрос о именовании методов разрешения, чтобы соответствовать события они обрабатывают, и канав аннотаций HandlesEvent. Тогда не удастся случайно определить дубликаты обработчиков.

Смежные вопросы