Come rimuovere il file suffisso / estensione (.jsp e .action) utilizzando il Framework Stripes?

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

  •  20-09-2019
  •  | 
  •  

Domanda

Sto cercando di usare abbastanza / clean URL nella mia web app.

Vorrei il seguente URL:

http://mydomain.com/myapp/calculator

.. per risolvere a:

com.mydomain.myapp.action.CalculatorActionBean

Ho cercato di sovrascrivere il NameBasedActionResolver con:

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;
    }
}

E l'aggiunta di questo per web.xml:

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

Il che mi arriva a:

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

Ma:

  1. Un randagio "" è ancora né abbastanza né pulita.
  2. Il nome della classe è ancora in maiuscolo nell'URL ..?
  3. Questo mi lascia ancora con *.jsp ..? E 'anche possibile per sbarazzarsi di entrambi .action e .jsp?
È stato utile?

Soluzione

Penso che si sta cercando l'annotazione @URLBinding. Guardate @URLBinding sul tuo Bean.

@UrlBinding ( "/ calcolatrice")

Altri suggerimenti

Stavo cercando di fare la stessa cosa, e avuto la stessa domanda, anche se volevo che il mio URL di utilizzare la barra http://mydomain.com/myapp/calculator/ finale

La risposta è quella di utilizzare @UrlBinding e la DynamicMappingFilter

ho modificato l'esempio di avere:

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

Poi ho aggiunto il DMF a 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>

Ora l'URL pulito funziona come previsto, e non sono mai reindirizzato a un URL * .action dopo aver interagito con la forma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top