【问题标题】:JavaBeans: Can not read Variables from JavaBeans classJavaBeans:无法从 JavaBeans 类中读取变量
【发布时间】:2015-12-03 11:31:22
【问题描述】:

我有一个简单的程序,它从用户填写 3 个数字的输入表单开始。表单操作是指一个控制器 servlet,我使用我定义的 setter 方法将数据存储在 Bean 类中。

number.setNumber1(Double.parseDouble(request.getParameter("number1")));

到目前为止,我使用

将 Number 对象存储在请求中
request.setAttribute("numbers", number);

并将其转发到输出页面,我可以在其中使用 ${numbers.biggestNumber(简单确定最大数字的 getter 方法)} 获取它。我正在使用的一个教程说我也可以通过使用这段代码直接从 Bean 获取数据:

<jsp:useBean id="num" scope="session" class="model.Numbers"/>
<c:out value="${num.biggestNumber}/>

但不知何故,Bean 使用了 Numbers 类的另一个对象。我看到了这种技术的优势,因为我不必将 Numbers 对象放入请求中。有人可以告诉我如何使用之前存储数据的相同 Numbers 对象吗?

我已经读过我不应该使用“jsp:setProperty...”来存储输入页面上的数据,但是如果我无法获取我手动写入 Bean 的信息,我不得不问自己为什么我应该使用JSP JavaBeans 注释。

我使用了搜索功能,但找不到适合我的问题的答案,或者我只是没有足够的经验来让他们进入更高级的环境......欢迎任何帮助

【问题讨论】:

  • 您如何将您的请求重定向到另一个页面?使用 response.redirect... ???
  • 不,我正在使用 dispatcher = request.getRequestDispatcher("/Output.jsp"); dispatcher.forward(request, response);
  • 经过大量尝试后,我得到了我所犯的错误,并解决了它。请参阅我编辑的答案。拜托,如果您对我的回答感到满意,请接受+赞成我的回答。

标签: java jsp javabeans


【解决方案1】:

如果你正在使用这个,

request.setAttribute("numbers", number);

然后在目标页面使用requestDispacher重定向,你也可以这样做,

进入 JSP 文件:

<jsp:useBean id="numbers" scope="request" class="model.Numbers"/>
<c:out value="${numbers.biggestNumber}/>

这里,

  1. 您使用了错误的 scope=session,这意味着您将值放入“请求”范围并尝试从会话中提取它是错误的。
  2. 在从范围放置/获取时,还保持属性名称“相同”。在这里,name="numbers" 在放置/获取时保持

【讨论】:

  • 当我首先将数据放入请求时,我可以使用 ,但是我试图避免这样做。我也将数据设置为 JavaBean,并且更愿意从那里获取它而不依赖于请求。抱歉,如果问题不清楚,我不是以英语为母语的人
【解决方案2】:

好吧,我的错误是我认为 JavaBeans-Jsp-Tags 会节省时间和代码。事实上,我必须创建一个 HttpSession-Object 来存储使用的 JavaBean 的 ID

HttpSession sess = request.getSession(true);
sess.setAttribute("number", number);

现在我的 Output.jsp 中的 JavaBean-Tag 知道要使用哪个对象(在 Input.jsp 中创建的那个)。据我现在了解,JavaBean-Jsp-Tag 高于普通参数添加到 Request 的唯一优点是我可以在整个 Session 中使用 Bean-Class 并且不依赖于 Request-Object。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多