Come rimuovere il file suffisso / estensione (.jsp e .action) utilizzando il Framework Stripes?
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:
- Un randagio "" è ancora né abbastanza né pulita.
- Il nome della classe è ancora in maiuscolo nell'URL ..?
- Questo mi lascia ancora con
*.jsp
..? E 'anche possibile per sbarazzarsi di entrambi.action
e.jsp
?
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.