Question

Je travaille dans le livre de Fred Daoud Stripes et d'essayer de convertir l'application Bonjour tout le monde à utiliser des URL amicales, comme je ne suis pas un grand fan des applications à base de suffixe comme http: // localhost:. 8080 / Getting_Started / Hello.action

Voici le avant ...

index.jsp:

<jsp:forward page="/Hello.action"/>

web.xml:

<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

et je ne UrlBinding sur mon HelloActionBean. Je l'exemple du livre de travail.

Je me demande si les exemples du livre peuvent convenir à une version antérieure de Stripes, comme je l'ai téléchargé 1.5.1 et mon web.xml définit le StripesFilter et StripesDispatcher alors que je l'ai vu un DynamicMappingFilter utilisé ailleurs, par exemple cet article par Fred sur TheServerSide.

Quoi qu'il en soit, j'ai fait les modifications suivantes:

index.jsp:

<jsp:forward page="/hello"/>

web.xml:

<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/*</url-pattern>
 </servlet-mapping>

HelloActionBean.java:

**@UrlBinding("/hello")**
public class HelloActionBean implements ActionBean 
{

Cependant, lorsque je tente de charger l'application par http: // localhost: 8080 / Getting_Started Je vois cela :

net.sourceforge.stripes.exception.ActionBeanNotFoundException: Could not locate an ActionBean that is bound to the URL [/]. Commons reasons for this include mis-matched URLs and forgetting to implement ActionBean in your class. Registered ActionBeans are: {/hello=class stripesbook.action.HelloActionBean, /controller/DefaultView.action=class net.sourceforge.stripes.controller.DefaultViewActionBean, /hello/=class stripesbook.action.HelloActionBean, /controller/DefaultView.action/=class net.sourceforge.stripes.controller.DefaultViewActionBean}
    at net.sourceforge.stripes.controller.AnnotatedClassActionResolver.getActionBean(AnnotatedClassActionResolver.java:341)

et si je y accède par http: // localhost: 8080 / Getting_Started / bonjour le serveur semble pour aller dans une boucle lancer une exception après l'autre.

Toutes les suggestions ont apprécié -. Merci

Était-ce utile?

La solution

Je l'ai essayé sur quelques autres choses et obtenu ce travail ...

I enlevé le servlet DispatcherServlet existants et les définitions de mappage de servlet dans web.xml et remplacé par le DynamicMappingFilter.

En prime, pour changer la façon dont les événements de liaison sont passés, de sorte que par exemple

http://localhost:8080/getting_started/hello?randomDate=

devient

http://localhost:8080/getting_started/hello/randomDate

changer le UrlBinding sur le ActionBean à:

@UrlBinding("/hello/{$event}")

Autres conseils

Il ne fonctionne pas pour moi de remplacer tout le servlet Dispatcher avec le DynamicMappingFilter (j'ai reçu un message d'erreur sur le DynamicMappingFilter fonctionne uniquement conjointement avec le StripesFilter). J'ai donc deux filtres et un filtre-mapping configurés dans mon web.xml maintenant:

<filter>
    <display-name>Stripes Filter</display-name>
    <filter-name>StripesFilter</filter-name>
    <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
    <init-param>
        <param-name>ActionResolver.Packages</param-name>
        <param-value>com.package.myactions.package</param-value>
    </init-param>
</filter>

<filter>
    <description>Dynamically maps URLs to ActionBeans.</description>
    <display-name>Stripes Dynamic Mapping Filter</display-name>
    <filter-name>DynamicMappingFilter</filter-name>
    <filter-class>
        net.sourceforge.stripes.controller.DynamicMappingFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>DynamicMappingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top