我试图通过将参数传递给构造函数来初始化类。我需要范围是“页面”。我知道我的构造函数中有一个参数,但是如何使用<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标记中,您不能调用任何构造函数。
有没有办法用构造函数初始化类?
答案 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。