3

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

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

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

有没有办法用构造函数初始化类?

4

1 回答 1

8

不。

要么使用<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)。有关详细信息,另请参阅我们的 servlets wiki 页面

尽管如此,拥有HttpServletRequesttype 的 bean 属性是可疑的。毫无疑问,有更好的方法来实现您错误地认为这一切都是正确的解决方案的具体功能需求

于 2015-06-15T12:32:09.183 回答