كيفية إزالة لاحقة الملف/الامتداد (.jsp و .action) باستخدام إطار العمل؟
سؤال
أنا أتطلع إلى استخدام عنوان URL الجميل / النظيف في تطبيق الويب الخاص بي.
أود عنوان URL التالي:
http://mydomain.com/myapp/calculator
.. للحل إلى:
com.mydomain.myapp.action.CalculatorActionBean
حاولت الكتابة فوق المعجبين بـ "actionResolver" مع:
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 على الفول.
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 النظيف كما هو متوقع ، ولم أكن قد أعيد توجيهه إلى عنوان URL *. بعد التفاعل مع النموذج.
لا تنتمي إلى StackOverflow