无法在 JSP 中获取 ModelAttribute 成员变量
Unable to get ModelAttribute member variable in JSP
我有以下class。
class Bar {
public Bar(String fooVal) {
this.foo = fooVal;
}
private String foo;
public String getFoo() {
return this.foo;
}
@Override
public String toString() {
return this.foo;
}
}
以下控制器
class Controller {
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public ModelAndView() {
return new ModelAndView("barJSP", "barModel", new Bar("testFooVal"));
}
}
现在我试图在 jsp 中访问 foo 的值。
我在栏中有以下两个 JSP 的变体 JSP 试图打印 foo Vals。
<% System.out.println(pageContext.findAttribute("barModel.foo")); %>
这将打印空值。不过
<% System.out.println(pageContext.findAttribute("barModel")); %>
这按预期打印了 testFooVal(它实际上打印了 toString() returns 的内容)。
我对 jsp 语法的理解是 .用于访问成员,只要为它定义了 getter 就应该可以工作。我错过了什么吗?
您可以使用 JSP EL
轻松访问对象:
${barModel.foo}
否则,您必须导入模型 class 并转换为转换:
<%@ page import="com.example.model.Bar"%>
<% Bar b = (Bar)(pageContext.findAttribute("barModel"));
out.println(b.getFoo());
%>
方法findAttribute()
按以下顺序在所有四个级别中搜索指定的属性——页面、请求、会话和应用程序。
它 returns NULL
当在任何级别都找不到属性时。
在下面的情况下
<% System.out.println(pageContext.findAttribute("barModel.foo")); %>
属性 barModel.foo
不可访问,因为它是 class 中的一个 private
变量,并且该方法找不到它。所以它 returns NULL
.
但是在
的情况下
<% System.out.println(pageContext.findAttribute("barModel")); %>
属性 barModel
在上下文中可用,打印时它会自动调用 toString()
方法。
我有以下class。
class Bar {
public Bar(String fooVal) {
this.foo = fooVal;
}
private String foo;
public String getFoo() {
return this.foo;
}
@Override
public String toString() {
return this.foo;
}
}
以下控制器
class Controller {
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public ModelAndView() {
return new ModelAndView("barJSP", "barModel", new Bar("testFooVal"));
}
}
现在我试图在 jsp 中访问 foo 的值。
我在栏中有以下两个 JSP 的变体 JSP 试图打印 foo Vals。
<% System.out.println(pageContext.findAttribute("barModel.foo")); %>
这将打印空值。不过
<% System.out.println(pageContext.findAttribute("barModel")); %>
这按预期打印了 testFooVal(它实际上打印了 toString() returns 的内容)。
我对 jsp 语法的理解是 .用于访问成员,只要为它定义了 getter 就应该可以工作。我错过了什么吗?
您可以使用 JSP EL
轻松访问对象:
${barModel.foo}
否则,您必须导入模型 class 并转换为转换:
<%@ page import="com.example.model.Bar"%>
<% Bar b = (Bar)(pageContext.findAttribute("barModel"));
out.println(b.getFoo());
%>
方法findAttribute()
按以下顺序在所有四个级别中搜索指定的属性——页面、请求、会话和应用程序。
它 returns NULL
当在任何级别都找不到属性时。
在下面的情况下
<% System.out.println(pageContext.findAttribute("barModel.foo")); %>
属性 barModel.foo
不可访问,因为它是 class 中的一个 private
变量,并且该方法找不到它。所以它 returns NULL
.
但是在
的情况下<% System.out.println(pageContext.findAttribute("barModel")); %>
属性 barModel
在上下文中可用,打印时它会自动调用 toString()
方法。