Как удалить суффикс/расширение файла (.jsp и .action) с помощью Stripes Framework?

Я хочу использовать красивые/чистые 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.

Но:

  1. Бродячий "." по-прежнему некрасиво и нечисто.
  2. Имя класса по-прежнему пишется с большой буквы в URL-адресе..?
  3. Это все еще оставляет меня с *.jsp..? Возможно ли вообще избавиться от .action и .jsp?

person Dolph    schedule 16.02.2010    source источник


Ответы (3)


Я думаю, вы ищете аннотацию @URLBinding. Посмотрите на @URLBinding на вашем Боб.

@UrlBinding("/калькулятор")

person Brian    schedule 16.02.2010
comment
Я должен был упомянуть, что пробовал это, но затем я получаю 404 при попытке доступа к http://mydomain.com/myapp/calculator. Кроме того, я предпочел бы установить свое собственное соглашение, а не настраивать по исключениям на основе действия за действием. - person Dolph; 16.02.2010

Попробуйте использовать DMF http://stripes.sourceforge.net/docs/current/javadoc/net/sourceforge/stripes/controller/DynamicMappingFilter.html

person Community    schedule 29.04.2010

Я пытался сделать то же самое, и у меня был тот же вопрос, хотя я хотел, чтобы в моем 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-адрес работает должным образом, и я никогда не перенаправляюсь на URL-адрес *.action после взаимодействия с формой.

person Greg Chabala    schedule 13.12.2010