Stripes Framework を使用してファイルのサフィックス/拡張子 (.jsp および .action) を削除するにはどうすればよいですか?
質問
Web アプリできれいな URL を使用したいと考えています。
次のURLを希望します。
http://mydomain.com/myapp/calculator
..次のように解決します。
com.mydomain.myapp.action.CalculatorActionBean
NameBasedActionResolver を次のように上書きしてみました。
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;
}
}
そしてこれを追加すると、 web.xml
:
<servlet-mapping>
<servlet-name>StripesDispatcher</servlet-name>
<url-pattern>*.</url-pattern>
</servlet-mapping>
これにより、次のことが可能になります。
http://mydomain.com/myapp/Calculator.
しかし:
- 迷い「」。まだきれいでもきれいでもありません。
- URL ではクラス名が大文字のままです。
- それはまだ私に残っています
*.jsp
..?両方とも取り除くことは可能ですか.action
そして.jsp
?
解決
@URLBinding アノテーションを探していると思います。見る @URLBinding あなたのBean上で。
@UrlBinding("/計算機")
他のヒント
私は同じことをしようとしていて、同じ質問がありましたが、URL の末尾にスラッシュを使用したかったのです。 http://mydomain.com/myapp/calculator/
答えは、@UrlBinding と DynamicMappingFilter を使用することです。
この例を次のように変更しました。
@UrlBinding("/calculator/")
public class CalculatorActionBean implements ActionBean {
.
.
.
return new ForwardResolution("/WEB-INF/view/calculator.jsp");
次に、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>
現在、クリーンな URL は期待どおりに機能し、フォームを操作した後に *.action URL にリダイレクトされることはありません。
所属していません StackOverflow