jsp - 用 <jsp :useBean> 中的构造函数初始化类

标签 jsp usebean

我正在尝试通过将参数传递给构造函数来初始化一个类。我需要范围是“页面”。我知道我的构造函数中有一个参数,但是我如何有一个使用 <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/

相关文章:

javascript - 将 JSP Java 代码添加到 HTML 中的占位符属性

java - Liferay:如何使enctype ="multipart/form-data"和方法="post"一起工作?

java - addCookie() 在 Tomcat 7 中不起作用

javax.servlet.ServletException : bean [name] not found within scope

jsp - Tomcat 6.0 不允许将泛型 ArrayList 用于 useBean

javax.servlet.ServletException : bean [name] not found within scope

java - 从URL下载文件到tomcat服务器

jQuery datepicker 工作但 Spring Controller 获取空日期