Как удалить суффикс / расширение файла (.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.
Но:
- Бездомный "." все еще не является ни симпатичным, ни чистым.
- Имя класса по-прежнему пишется с заглавной буквы в URL ..?
- Это все еще оставляет меня с
*.jsp
..?Возможно ли вообще избавиться от обоих.action
и.jsp
?
Решение
Я думаю, вы ищете аннотацию @URLBinding .Посмотрите на @Привязка к URL - адресу на твоем Бобе.
@UrlBinding("/калькулятор")
Другие советы
Попробуйте использовать DMF http://stripes.sourceforge.net/docs/current/javadoc/net/sourceforge/stripes/controller/DynamicMappingFilter.html
Я пытался сделать то же самое, и у меня возник тот же вопрос, хотя я хотел, чтобы в моем URL-адресе использовалась завершающая косая черта http://mydomain.com/myapp/calculator/
Ответ заключается в использовании @UrlBinding и DynamicMappingFilter
Я изменил пример, чтобы иметь:
@UrlBinding("/calculator/")
public class CalculatorActionBean implements ActionBean {
.
.
.
return new ForwardResolution("/WEB-INF/view/calculator.jsp");
Затем я добавил ДМФ в 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 после взаимодействия с формой.