2010-02-16 22 views
4

我正在尋找在我的web應用程序中使用漂亮/乾淨的URL。如何使用Stripes框架去除文件後綴/擴展名(.jsp和.action)?

我想以下網址:

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. 

不過: 「」

  1. 一隻流浪仍然既不漂亮也不乾淨。
  2. 類名仍然在URL中大寫。
  3. 這仍然讓我與*.jsp ..?是否有可能擺脫.action.jsp

回答

4

我認爲您正在尋找@URLBinding註釋。在你的Bean上查看@URLBinding

@UrlBinding(「/計算器」)

+0

我應該提到我已經試過這個,但是當我嘗試訪問'http:// mydomain.com/myapp/calculator'時,我得到了一個404。此外,我寧願建立自己的約定,而不是按例外配置,逐個行動的基礎上。 – Dolph

+1

@URLBinding註釋絕對有效。 – Pointy

0

我試圖做同樣的事情,並且有同樣的問題,但我希望我的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。