我正在尝试通过将参数传递给构造函数来初始化一个类。我需要范围是“页面”。我知道我的构造函数中有一个参数,但是我如何有一个使用 <jsp:useBean>
接受参数的参数,并且可以从 JSP 页面调用?
public class A extends B {
A(ServletRequest req) {
super(req);
}
如果没有无参构造函数,我们可以使用< jsp:useBean id="someId" class="mypackage.A" scope="page" />
标签。但是在 useBean JSP 标记中,您不能调用任何构造函数。
有没有办法用构造函数初始化类?
最佳答案
没有。
使用<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 .
关于jsp - 用 <jsp :useBean> 中的构造函数初始化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30842354/