使用<jsp:usebean>中的构造函数初始化类

时间:2015-06-15 10:01:37

标签: jsp usebean

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

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

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

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

1 个答案:

答案 0 :(得分: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)。有关详细信息,另请参阅our servlets wiki page

尽管如此,拥有HttpServletRequest类型的bean属性是可疑的。毫无疑问,有更好的方法可以实现the concrete functional requirement for which you incorrectly thought that this all would be the right solution