Comment faire pour supprimer le suffixe fichier / extension (.jsp et .action) en utilisant le cadre Stripes?

StackOverflow https://stackoverflow.com/questions/2270234

  •  20-09-2019
  •  | 
  •  

Question

Je cherche à utiliser URL jolie / propre dans mon application web.

Je voudrais l'adresse suivante:

http://mydomain.com/myapp/calculator

.. résoudre à:

com.mydomain.myapp.action.CalculatorActionBean

J'ai essayé d'écraser le NameBasedActionResolver avec:

public class CustomActionResolver extends NameBasedActionResolver {
    public static final String DEFAULT_BINDING_SUFFIX = ".";

    @Override
    protected String getBindingSuffix() {
        return DEFAULT_BINDING_SUFFIX;
    }

    @Override
    protected List<String> getActionBeanSuffixes() {
        List<String> suffixes = new ArrayList<String>(super.getActionBeanSuffixes());
        suffixes.add(DEFAULT_BINDING_SUFFIX);
        return suffixes;
    }
}

Et d'ajouter ceci à web.xml:

<servlet-mapping>
    <servlet-name>StripesDispatcher</servlet-name>
    <url-pattern>*.</url-pattern>
</servlet-mapping>

Ce qui me arrive à:

http://mydomain.com/myapp/Calculator.

  1. Un parasite "" est encore ni assez ni propre.
  2. Le nom de la classe est toujours en majuscule dans l'URL ..?
  3. Cela me laisse encore avec *.jsp ..? Est-il même possible de se débarrasser des deux .action et .jsp?
Était-ce utile?

La solution

Je pense que vous êtes à la recherche de l'annotation @URLBinding. Regardez sur votre @URLBinding Bean.

@UrlBinding ( "/ calculatrice")

Autres conseils

Je suis en train de faire la même chose, et avait la même question, mais je voulais que mon URL à utiliser le slash http://mydomain.com/myapp/calculator/

La réponse est d'utiliser @UrlBinding et le DynamicMappingFilter

Je modifié l'exemple d'avoir:

@UrlBinding("/calculator/")
public class CalculatorActionBean implements ActionBean {
  .
  .
  .
return new ForwardResolution("/WEB-INF/view/calculator.jsp");

Ensuite, j'ai ajouté le DMF à web.xml:

<filter>
    <display-name>Stripes Dynamic Mapping Filter</display-name>
    <filter-name>DynamicMappingFilter</filter-name>
    <filter-class>net.sourceforge.stripes.controller.DynamicMappingFilter</filter-class>
    <init-param>
        <param-name>ActionResolver.Packages</param-name>
        <param-value>com.example.stripes</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>DynamicMappingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

Maintenant, l'URL propre fonctionne comme prévu, et je ne suis jamais redirigé vers une URL * de .action après l'interaction avec la forme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top