4

我希望在我的网络应用程序中使用漂亮/干净的 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.

但:

  1. 一个流浪的“。” 仍然既不漂亮也不干净。
  2. URL中的类名仍然大写..?
  3. 那还留给我*.jsp..?甚至有可能同时摆脱.actionand.jsp吗?
4

3 回答 3

4

我认为您正在寻找 @URLBinding 注释。查看Bean 上的@URLBinding

@UrlBinding("/计算器")

于 2010-02-16T02:42:48.593 回答
0

尝试使用 DMF http://stripes.sourceforge.net/docs/current/javadoc/net/sourceforge/stripes/controller/DynamicMappingFilter.html

于 2010-04-29T01:26:34.313 回答
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。

于 2010-12-13T21:02:28.440 回答