我试图通过将参数传递给构造函数来初始化类。我需要范围是“页面”。我知道我的构造函数中有一个参数,但是如何有一个使用接受参数<jsp:useBean>并可以从JSP页面调用的参数呢?
<jsp:useBean>
public class A extends B { A(ServletRequest req) { super(req); }
如果没有参数,则可以使用< jsp:useBean id="someId" class="mypackage.A" scope="page" />标签。但是在useBean JSP标记中,您不能调用任何构造函数。
< jsp:useBean id="someId" class="mypackage.A" scope="page" />
有什么办法用构造函数初始化类吗?
没有。
无论使用<jsp:setProperty>,
<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]
但是,具有HttpServletRequest类型为Bean的属性是可疑的。毫无疑问,有更好的方法可以实现具体的功能要求,而您错误地认为这将是正确的解决方案。
HttpServletRequest