كيف تحصل على معلمة نموذج في servlet؟ request.getAttribute لا يعمل

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

سؤال

هل من الممكن أن يكون لديك نفس التحقق من صحة أداء Servlet؟ يبدو أنه قد يتعين على المرء استخدام نوع من العودية هنا ، ولكن عندما أكتب شيء في مربع البريد الإلكتروني والنقر فوق إرسال معلمة البريد الإلكتروني لا يزال فارغًا. بعد النقر فوق إرسال ، يتغير عنوان URL إلى: http://localhost/servlet/EmailServlet?Email=test

تظهر الصفحة Email: null ومربع النص ، لكنني كنت أتوقع أن يمر بوظيفة التحقق من الصحة (أي لا تكون فارغة). هل من الممكن تحقيق هذا النوع من السلوك العودية؟

public class EmailServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, 
            HttpServletResponse response) throws ServletException, IOException 
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        String theForm =
            "<FORM METHOD=\"GET\" ACTION=\"EmailServlet\">\n<INPUT TYPE=\"TEXT\" NAME=\"Email\"><P>\n" 
            + "<INPUT TYPE=\"SUBMIT\">\n</FORM>";
        String email = (String) request.getAttribute("Email");

        // Bogus email validation...
        if( email == null )
        {
            out.println("Email: " + email + "\n" + theForm);
        }
        else if(emailAddressNotBogous(email))
        {
            out.println("Thank you!");
        }
        else
        {
            out.println("“Invalid input. Please try again:\n" + theForm);
        }
        out.flush();        
    }
}

تحديث: كما أشار الإجابة المقبولة ، كان هناك خطأ في الكود. تغيير getAttribute إلى getParameter يعمل على إصلاح "المشكلة" :).

سلسلة البريد الإلكتروني = (سلسلة) طلب.getAttributegetParameter ("البريد الإلكتروني") ؛

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

المحلول

للحصول على معلمة نموذج في servlet تستخدمها:

  request.getParameter("Email");

ونعم يمكنك استخدام نفس servlet ولكن سيكون من الأسهل استخدام اثنين من servlets للقيام بذلك.

نصائح أخرى

يمكن أن يكون لديك طريقة النموذج للنشر ثم تنفيذ طريقة dopost () في servlet الخاص بك. سيتم استدعاء DOGET () لعرض النموذج وسيتم استدعاء DOPOST () لمعالجة تقديم النموذج.

بدلاً من ذلك ، يمكن أن يكون لديك اختبار طريقة DOGET () لوجود أي معلمات. إذا لم يكن هناك أي ، فما عليك سوى عرض النموذج. إذا كان هناك ثم قم بمعالجة التقديم ...

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