Getting a null value for where i expect a string set by the mutator

♀尐吖头ヾ 提交于 2019-12-13 07:17:01

问题


Following is the servlet class that sets the name by invoking a method on the object of a bean class and then forwards to a jsp page .

package BeanTesters;

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

 public class Controller extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
    Bean bean = new Bean(); 
    bean.setName("Suhail Gupta");
    //request.setAttribute("name", bean);
    RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
    rd.forward(request, response);
  }
}

And this is the bean class :

package BeanTesters;

 public class Bean {

  private String name = null;

  public void setName(String n) {
    name = n;
  }

  public String getName() {
    return name;        
  }
 }

following is a jsp snippet that tries to display the name set by the servlet:

<jsp:useBean id="namebean" class="BeanTesters.Bean" scope="request" />
    Person created by the Servlet : <jsp:getProperty name="namebean" property="name" />

The result i get is : Person created by the Servlet : null Why do i get a null value ?


回答1:


Because the jsp:useBean tag tries to get a bean in the attribute "namebean" of the request, and since you didn't store anything under this attribute name, it creates one. The bean instance used by the JSP is thus a different instance than the one created in the servlet.

Put the following code in your servlet, and you'll get the desired behavior:

request.setAttribute("namebean", bean);

Note that the jsp:xxx tags are completely obsolete, and should not be used anymore. You should instead use the JSP expression language (EL), and the JSTL:

Person created by the Servlet : ${namebean.name}

Or even better, to make sure the potential HTML characters present in the name are properly escaped:

Person created by the Servlet : <c:out value="${namebean.name}"/>


来源:https://stackoverflow.com/questions/9680248/getting-a-null-value-for-where-i-expect-a-string-set-by-the-mutator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!