Wie die Dateiendung / Extension (.jsp und .Action) mit dem Streifen-Framework entfernen?
Frage
Ich bin auf der Suche ziemlich verwenden / clean URL ist in meinem Web-App.
Ich mag die folgende URL:
http://mydomain.com/myapp/calculator
.. zu lösen zu:
com.mydomain.myapp.action.CalculatorActionBean
Ich habe versucht, das Überschreiben des NameBasedActionResolver mit:
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;
}
}
Und das Hinzufügen dieser zu web.xml
:
<servlet-mapping>
<servlet-name>StripesDispatcher</servlet-name>
<url-pattern>*.</url-pattern>
</servlet-mapping>
Was mich bekommt an:
http://mydomain.com/myapp/Calculator.
Aber:
- A verirren "" noch weder hübsch noch sauber ist.
- Der Klassenname noch in der URL aktiviert wird ..?
- , die noch Blätter mich mit
*.jsp
..? Ist es auch möglich, sowohl.action
und.jsp
loswerden?
Lösung
Ich glaube, Sie für die @URLBinding Anmerkung suchen. Schauen Sie sich @URLBinding auf Bean.
@UrlBinding ( "/ Rechner")
Andere Tipps
Ich habe versucht, das gleiche zu tun, und hatte die gleiche Frage, obwohl ich meine URL wollte den Slash http://mydomain.com/myapp/calculator/
verwenden
Die Antwort ist @UrlBinding & die DynamicMappingFilter
zu verwenden,ich das Beispiel geändert zu haben:
@UrlBinding("/calculator/")
public class CalculatorActionBean implements ActionBean {
.
.
.
return new ForwardResolution("/WEB-INF/view/calculator.jsp");
Dann habe ich das DMF zu 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>
Nun ist die saubere URL wie erwartet funktioniert, und ich bin nie auf eine umgeleitet * .Action URL, nachdem sie mit der Form zusammenwirkt.