Frage

Ich arbeite durch Fred Daouds Stripes Buch und versuchen, die Hallo Welt Anwendung konvertiert-freundliche URLs zu verwenden, da ich kein großer Fan von Suffix-basierten bin Zuordnungen wie http: // localhost:. 8080 / getting_started / Hello.action

Hier ist die vor ...

index.jsp:

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

web.xml:

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

und ich habe kein UrlBinding auf meinem HelloActionBean. Ich habe das Buch Beispiel arbeiten.

Ich frage mich, ob das Buch Beispiele eine frühere Version von Streifen passen kann, wie ich 1.5.1 und meine web.xml definiert heruntergeladen haben die StripesFilter und StripesDispatcher während ich einen DynamicMappingFilter an anderer Stelle verwendet gesehen haben, z.B. in diesem Artikel von Fred auf TheServerSide.

Wie auch immer, ich folgende Änderungen vorgenommen:

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 
{

Allerdings, wenn ich versuche, die App über http zu laden: // localhost: 8080 / getting_started Ich sehe das :

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)

und wenn ich es Zugriff durch http: // localhost: 8080 / getting_started / hallo der Server scheint zu einer Schleife geht in eine Ausnahme nach der anderen zu werfen.

Irgendwelche Vorschläge geschätzt -. Dank

War es hilfreich?

Lösung

Ich habe ein paar anderen Dinge auszuprobieren und hätte es funktioniert ...

Ich entfernte die vorhandenen DispatcherServlet Servlet und Servlet-Mapping-Definitionen in web.xml und mit dem DynamicMappingFilter ersetzt.

Als Bonus den Weg Link Ereignisse zu ändern, weitergegeben werden, so dass zum Beispiel

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

wird

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

Ändern Sie den UrlBinding auf der ActionBean an:

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

Andere Tipps

Es funktioniert nicht nur für mich, um den Dispatcher Servlet mit dem DynamicMappingFilter zu ersetzen (ich bekam eine Fehlermeldung über die DynamicMappingFilter funktioniert nur in Verbindung mit dem StripesFilter). Also ich habe zwei Filter und ein Filter-Mapping in meiner web.xml konfiguriert nun:

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top