نقاط دخول متعددة في عمل الدعامات (Migration Struts 2.2.3 -> 2.3.1)

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

  •  26-12-2019
  •  | 
  •  

سؤال

لدي إجراء في struts.xml

<action name="reprint" class="reprintAction">
        <result name="success" type="redirectAction">
            <param name="actionName">reprint</param>
            <param name="namespace">/x</param>
            <param name="errorFlag">${errorFlag}</param>
            <param name="message">${message}</param>
        </result>
        <result name="view">/jsp/reprintOverview.jsp</result>
</action>

جي إس بي:

<s:form action="reprint">
    <s:select name="selectedPdfPrinter" list="shopPdfPrinterList" listKey="deviceId" listValue="deviceId" theme="simple"/>
    <s:submit value="Print" theme="simple" method="shopPdfReprint"/>
</s:form>

مع عدة عناصر شكلية، كلها مرتبطة بفعل واحد.يحتوي كل نموذج على زر إرسال فردي برمز مميز method (على سبيل المثال"shopPdfReprint").كل method يتم تعيينه إلى طريقة في الفئة المقابلة.

كل شيء يعمل بشكل جيد مع Struts 2.2.3.ولكن بعد الترحيل إلى 2.3.1، لم يعد تعيين الطريقة يعمل.بدلاً من ذلك استدعاء الطريقة المقابلة (على سبيل المثال."shopPdfReprint")، فقط execute- يتم استدعاء طريقة الفصل.

لقد نظرت إلى المستندات ، لكن للأسف لم أجد أدنى فكرة ، وكيفية التكيف مع 2.3.1 أي شخص واجه هذا؟المساعدة موضع تقدير :]

هل كانت مفيدة؟

المحلول

يحدث هذا لأنك قمت بإيقاف تشغيل DMI.ال method تعمل السمة مع علامة الإرسال كما كان من قبل حتى بعد إعادة إرسال الإصلاحات الأمنية.تمكين DMI باستخدام الثابت

<constant name="struts.enable.DynamicMethodInvocation" value="true"/> 

اسمحوا لي أن أعرف إذا لم ينجح ذلك.

نصائح أخرى

إذا كان أي شخص يتحرك أو يعمل على Struts 2.5، فلن يحتاج إلى تعيين الإجراءات باستخدام struts.xml.يعتمد Strtus 2.5 على التعليقات التوضيحية، لذا يمكن للمطور في فئة الإجراء تعيين إجراءات متعددة داخل فئة واحدة باستخدام التعليق التوضيحي.

قد يكون هذا الرابط مفيدًا من إصدارات الدعامات القديمة إلى إصدار الدعامات 2.5.

https://struts.Apache.org/docs/struts-23-to-25-migration.html

فيما يلي الكود التجريبي البسيط.

package com.stsh.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;
import com.stsh.intercepter.AuthRequired;

@ParentPackage(value="default")
@Namespace(value="/dashboard")
public class DashboardAction extends ActionSupport implements AuthRequired{

    private static final long serialVersionUID = 1L;

    @Action(value = "home", results = { @Result(name = "success", location = "dashboard.tiles", type = "tiles") })
    public String dashboard(){
        return "success";
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top