Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何调用ModelAndView方法或在JSP页面中获取对它的引用?_Java_Jsp_Spring Mvc - Fatal编程技术网

Java 如何调用ModelAndView方法或在JSP页面中获取对它的引用?

Java 如何调用ModelAndView方法或在JSP页面中获取对它的引用?,java,jsp,spring-mvc,Java,Jsp,Spring Mvc,我反映了如何使用扩展类通过JSP页面在ModelAndView中使用getter调用方法或获取属性值 例如: 我将扩展类ModelAndView到类视图,并在其中实现一些方法来获取一些数据 import org.springframework.web.servlet.ModelAndView; public class View extends ModelAndView { private Map store = new HashMap<>() ; public

我反映了如何使用扩展类通过JSP页面在ModelAndView中使用getter调用方法或获取属性值

例如:

我将扩展类ModelAndView到类视图,并在其中实现一些方法来获取一些数据

import org.springframework.web.servlet.ModelAndView;

public class View extends ModelAndView {

    private Map store = new HashMap<>() ;

    public Object getElement(String index) {
        return store.get(index);
    }

    public void setElement(String index,Object o) {
         store.put(index,o);
    }

}
除了从JSP页面中的视图中获取我的字符串测试之外,没有其他内容:

example.jsp

<body>
    <h1>WELCOME</h1>
    // how can i here call method getElement of object View.
    ${this.getElement("test")}
    ${getElement("test")}
</body>

如何调用方法getElement;对于从WelcomeController返回的对象视图,从JSP中调用方法并不容易。这就是来自Spring的ModelAndView的原因:您提供了对视图的引用,并使用易于从视图访问的属性填充模型

public class WelcomeController extends AbstractController {

    private String viewName;

    @Override
    protected ModelAndView handleRequestInternal(
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        ModelAndView mav = new ModelAndView("example.jsp");
        mav.addObject("test", "Hello im test");
        return mav;
    }
}
然后,在您的视图中,您可以简单地从sub-jacent模型访问任何对象:

<body>
    <h1>WELCOME</h1>
    ${test}
</body>

也许我错了,但你不能定义你的控制器:

@ManagedBean(name = WelcomeController.CONTROLLER_NAME)
public class WelcomeController extends AbstractController {

public static final String CONTROLLER_NAME = "welcomeController";
..
public String calculateSomeValue() {
   return "Hello";
}
}
并在jsf页面中使用它,以便:

<body>
    <h1>WELCOME</h1>
    ${welcomeController.calculateSomeValue()}
</body>

我认为在JSP中,您无法访问整个模型并仅查看其模型映射的项,因此必须使用addObject将存储添加到其中。。
@ManagedBean(name = WelcomeController.CONTROLLER_NAME)
public class WelcomeController extends AbstractController {

public static final String CONTROLLER_NAME = "welcomeController";
..
public String calculateSomeValue() {
   return "Hello";
}
}
<body>
    <h1>WELCOME</h1>
    ${welcomeController.calculateSomeValue()}
</body>