كيفية إزالة لاحقة الملف/الامتداد (.jsp و .action) باستخدام إطار العمل؟

StackOverflow https://stackoverflow.com/questions/2270234

  •  20-09-2019
  •  | 
  •  

سؤال

أنا أتطلع إلى استخدام عنوان 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.

لكن:

  1. طائشة ". لا تزال جميلة ولا نظيفة.
  2. لا يزال اسم الفصل في عنوان URL ..؟
  3. هذا لا يزال يتركني مع *.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 *. بعد التفاعل مع النموذج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top