【问题标题】:Session attribute not working with useBean value会话属性不适用于 useBean 值
【发布时间】:2017-01-03 19:25:58
【问题描述】:

我目前正在创建一个使用 java servlet 和 jspx 页面的 Web 应用程序。我创建了一个带有参数的 java 类,当调用该类为 LessonSelection(int owner) 时。我知道您不能使用带参数的 bean,所以我使用参数创建了该类的对象,然后将其添加到会话中,然后在 useBean 中使用该会话属性。

我有一个错误提示“useBean 类属性 ${selected} 的值无效”

useBean 代码如下。

<jsp:useBean class="${selected}" id="timetable" scope="session"/>

java代码如下。

HttpSession session = request.getSession(true);
session.setAttribute("username", user);
session.setAttribute("id", id);
selected = new LessonSelection(id);
session.setAttribute("selected", selected);
dispatcher = this.getServletContext().getRequestDispatcher("/LessonTimetableView.jspx");

如果您需要我编写的更多代码,请向我致谢。

编辑1:

我想我会检查它是否真的被添加到会话属性中并被添加。它打印为“model.LessonSelection@1457de3”。它仍然显示相同的错误。

【问题讨论】:

    标签: java session servlets javabeans jspx


    【解决方案1】:

    jsp:useBean 处的 class 必须是您的属性的包 + 类!假设您的LessonSelection 位于包com.test 中。代码如下:

    <jsp:useBean class="com.test.LessonSelection" id="timetable" scope="session"/>
    

    编辑 1

    试试这个:

    <jsp:useBean type="com.test.LessonSelection" id="timetable" scope="session"/>
    

    它看到使用类型,JSP 不会为你实例化它,它只会在给定范围内从给定类型的 bean 中查找。见here。

    【讨论】:

    • 谢谢你,但我有一个 LessonSelection 类的参数,所以它不允许我这样做。我已经尝试过 class="com.test.LessonSelection(1)" 但这给出了另一个错误
    • @HasanTariq,尝试创建默认构造函数,看看是否有效
    • 这是一个作业,我的讲师就是这样上课的。我不认为我可以改变它
    • @HasanTariq,查看我的编辑,并尝试将 class 更改为 type
    • 我会尝试使用 type 但是我将如何给 owner 参数呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2013-11-04
    • 2011-11-12
    • 2010-10-07
    • 1970-01-01
    相关资源
    最近更新 更多