一尘不染

用构造函数初始化类

jsp

我试图通过将参数传递给构造函数来初始化类。我需要范围是“页面”。我知道我的构造函数中有一个参数,但是如何有一个使用接受参数<jsp:useBean>并可以从JSP页面调用的参数呢?

 public class A extends B {
    A(ServletRequest req) {
       super(req);
}

如果没有参数,则可以使用< jsp:useBean id="someId" class="mypackage.A" scope="page" />标签。但是在useBean JSP标记中,您不能调用任何构造函数。

有什么办法用构造函数初始化类吗?


阅读 248

收藏
2020-06-10

共1个答案

一尘不染

没有。

无论使用<jsp:setProperty>

<jsp:useBean id="someId" class="mypackage.A" scope="page">
    <jsp:setProperty name="someId" property="request" value="${pageContext.request}" />
</jsp:useBean>

或使用普通的servlet:

request.setAttribute("someId", new A(request));

顺便说一句,您[servlets]在问题上加上了标签,这是令人惊讶的,<jsp:useBean>因为这两种管理bean的方法相互冲突(一种是MVC级别1,另一种是MVC级别2),所以通常不会与之一起使用。

但是,具有HttpServletRequest类型为Bean的属性是可疑的。毫无疑问,有更好的方法可以实现具体的功能要求,而您错误地认为这将是正确的解决方案。

2020-06-10