2013-02-07 113 views
0

我有以下类发送名称变量的值,但jsp不显示它。 它只是显示的Hello World消息jsp不显示变量的值

Employee.java

public class Employee { 

    private String name; 

    public Employee(){ 
     this.name = "Daniel"; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) 
    { 
     this.name = name; 
    } 

Emp.java

public class Emp implements Controller { 


private Employee empp; 

protected final Log logger = LogFactory.getLog(getClass()); 

    @Override 
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

     System.out.println("empp:"+this.empp.getName()); 
     String myname = empp.getName(); 
     logger.info("Returning hello view"); 

    return new ModelAndView("emp.jsp","name",myname); 

    } 

Emp.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <h1>Hello World!</h1> 
     <h2><c:out value="${name}"/></h2> 
    </body> 
</html> 

还用以下

@Override 
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    System.out.println("empp:"+this.empp.getName()); 
    String myname = empp.getName(); 
    logger.info("Returning hello view"); 
    Map<String, Object> myModel = new HashMap<String, Object>(); 
    myModel.put("name", this.empp.getName()); 

return new ModelAndView("emp.jsp","model",myModel); 
} 

Emp.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <h1>Hello World!</h1> 
     <h2><c:out value="${model.name}"/></h2> 
    </body> 
</html> 

我用

<h1><%= pageContext.findAttribute("model.name") %></h1> 

但它返回null。

回答

1

您需要将值employeeInstance.getName()添加到ModelAndView。按照docs,这里是如何做到这一点:

@Override 
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     logger.info("Returning hello view"); 
     ModelAndView modelAndView = new ModelAndView(); 
     modelAndView.addObject("name", employeeInstance.getName()); 
     modelAndView.setViewName("Emp.jsp"); 
     return modelAndView; 
    } 
1

作为控制器的接口,其含量的不同变量不能改变,它只是一个只读值。接口控制器中的变量名称是什么?

+0

我已更新该问题 –

0

如果没有这些作品只是用

request.setParameter在Java

和JSP

response.getParameter

0

你应该添加到您的网页,头上:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

或直接使用EL:

<h1>${model.name}</h1> 
0

在我的情况下,这个错误是我进口org.springframework.web.portlet.ModelAndView而不是org.springframework.web.servlet.ModelAndView。使用后者解决了我的问题。