Pregunta

Estoy trabajando a través del libro rayas de Fred Daoud y tratar de convertir la aplicación Hello World utilizar URLs amigables, ya que no soy un gran fan de las asignaciones basadas en sufijos como http: // localhost:. 8080 / Getting_Started / Hello.action

Aquí está el antes ...

index.jsp:

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

web.xml:

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

y no tengo en mi UrlBinding HelloActionBean. Tengo el ejemplo de libro de trabajo.

Me pregunto si los ejemplos del libro pueden adaptarse a una versión anterior de rayas, como he descargado 1.5.1 y mi web.xml define el StripesFilter y StripesDispatcher mientras que yo he visto un DynamicMappingFilter utilizado en otros lugares, por ejemplo, en este artículo por Fred en TheServerSide.

De todos modos, he hecho los siguientes cambios:

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 
{

Sin embargo, cuando intento cargar la aplicación a través de http: // localhost: 8080 / Getting_Started Veo esto :

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)

y si puedo acceder a él a través de http: // localhost: 8080 / Getting_Started / hola el servidor parece para entrar en un bucle que lanza una excepción después de otro.

Cualquier sugerencia apreció -. Gracias

¿Fue útil?

Solución

He estado probando algunas otras cosas y tengo trabajo ...

I eliminado las definiciones de servlet DispatcherServlet y servlet-mapping existentes en web.xml y reemplazado con el DynamicMappingFilter.

Como beneficio adicional, para cambiar la forma en que se pasan sucesos de enlace, de modo que, por ejemplo,

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

se convierte

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

cambiar el UrlBinding en el ActionBean a:

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

Otros consejos

No funcionó para mí basta con sustituir el servlet Dispatcher con la DynamicMappingFilter (Tengo un mensaje de error acerca de la DynamicMappingFilter sólo funciona en conjunción con el StripesFilter). Así que tengo dos filtros y un filtro de mapeo configurados en mi Web.xml ahora:

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top