【问题标题】:CDI - Java EE Servlet saving variables to a managed beanCDI - Java EE Servlet 将变量保存到托管 bean
【发布时间】:2014-06-01 23:33:43
【问题描述】:

我有一个 Java EE 类,它当前从表单中读取信息并将其打印出来。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Response extends HttpServlet
{
    String date = "0";

    public void init() throws ServletException 
    {
        //Get Election Date from xml
        String initial = getInitParameter("electionDate");
        date = initial;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException
    {
        //Get values from form
        PrintWriter out = response.getWriter(); 
        String firstName=request.getParameter("firstname");  
        String lastName=request.getParameter("lastname");  
        String address=request.getParameter("address");  
        String city=request.getParameter("city");  
        String state=request.getParameter("state");  
        String zip=request.getParameter("zip");  
        String phone = request.getParameter("phone"); 
        String affil=request.getParameter("affil");

        //Print Summary of Voter Registration
        out.println("<html>");
        out.println("<head><title>Registration Summary</title></head>");
        out.println("<body>");
        out.println("<p>Registration Summmary</p>"); 
        out.println("<p>First Name: " + firstName + "</p>");
        out.println("<p>Last Name: " + lastName + "</p>"); 
        out.println("<p>Address : " + address + "</p>"); 
        out.println("<p>City : " + city + "</p>");
        out.println("<p>State : " + state + "</p>");
        out.println("<p>Zip: " + zip + "</p>");
        out.println("<p>Phone Number: " + phone + "</p>"); 
        out.println("<p>Affiliation: " + affil + "</p>"); 
        out.println("<p>Next Election Date: " + date + "</p></p>");

        out.println("<p>Is the above information correct?</p>"); 
        out.println("<button>Yes</button>"); 
        out.println("<button>No</button>"); 

        out.println("</body></html>");
        out.close();
    }
}

我想从这个 Java servlet 中获取值(名字、姓氏等)并注入到一个 bean。

然后,当此文件调用另一个 servlet 时,我希望 bean 中的值在该 servlet 中可用。

我只想知道如何将上面创建的变量存储到托管 bean 中,然后让其他 servlet 引用并检索该 bean 中的变量。

我已经设置了 beans.xml、web.xml、pom.xml(我正在使用 Maven)文件。

【问题讨论】:

    标签: html jakarta-ee cdi


    【解决方案1】:

    你不能简单地注入字符串,所以你必须使用一个限定符(最简单的是@Named,看看是否足够)。

    在你的 servlet 中说

    @Produces
    @Named("foo")
    String lastName;
    ...
    void doPost() {
      lastName = getParameter(...);
    }
    

    在目标bean中,使用

    @Inject
    @Named("foo")
    String lastName;
    

    由于您处于请求范围内,因此请记住,将请求范围内的值注入到更长寿的实例(例如 EJB)中可能会导致不可预知的行为。我严重怀疑你的方法会让你开心。或许你可以告诉我们更多关于你想要做什么的信息?

    【讨论】:

      猜你喜欢
      • 2018-06-22
      • 1970-01-01
      • 2016-07-09
      • 2014-04-30
      • 2015-07-29
      • 2015-08-29
      • 2013-11-26
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多