You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC控制器向JSP传值失败,添加$符号后浏览器报错

解决Spring MVC控制器数据传递到JSP的显示问题

我来帮你排查下这个问题,主要是几个细节没处理到位,我们一步步来修正:

1. 控制器未将Login对象传入模型

你在LoginUser方法里把model.addObject("login",login);注释掉了——这就导致JSP页面根本接收不到后端传递的Login实例,自然只能输出你写的占位符文本。

修正后的控制器代码:

@Controller
public class LoginController {
    public final static String WELCOME = "Welcome";
    public final static String LOGIN = "Login";

    @RequestMapping(value ="/login" , method = RequestMethod.GET)
    public ModelAndView ShowLogin() {
        ModelAndView mav = new ModelAndView(LOGIN);
        return mav;
    }

    @RequestMapping(value = "/loginProcess", method = RequestMethod.POST)
    public ModelAndView LoginUser(@ModelAttribute("login") Login login) {
        ModelAndView model = new ModelAndView(WELCOME);
        System.out.println(login.getUserID());
        System.out.println(login.getPassword());
        model.addObject("login",login); // 取消注释,将Login对象传入模型
        return model;
    }
}

2. JSP的EL表达式写法错误且未开启EL支持

你之前写的{login.UserID}不是有效的EL表达式,正确格式是${...};另外旧版本JSP默认会忽略EL表达式,需要手动开启,同时要注意JavaBean属性名的匹配规则:

  • EL里的属性名由getter方法推导:比如getUserID()对应的属性是userID(去掉get后首字母小写),getPassword()对应password。
  • 在page指令中添加isELIgnored="false"确保EL生效。

修正后的Welcome.jsp代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1" isELIgnored="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome</title>
</head>
<body>
<h1>${login.userID}</h1>
<h1>${login.password}</h1>
</body>
</html>

3. 额外确认:Login类符合JavaBean规范

虽然控制台能打印值,但还是确认下Login类的结构是否规范,比如:

public class Login {
    private String userID;
    private String password;

    public String getUserID() {
        return userID;
    }

    public void setUserID(String userID) {
        this.userID = userID;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

做完这些修改后重启项目,提交登录请求,JSP就能正确显示用户的ID和密码了。

内容的提问来源于stack exchange,提问作者Vidhi Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:48:53