是否可以在JSP中的条件上使用usebean?

发布于 2024-12-14 12:40:08 字数 923 浏览 1 评论 0原文

我有一个允许用户进行搜索的应用程序。

根据输入的搜索条件,对 DAO 函数进行服务调用(模式 jsp 事件 -> 拦截器 -> 处理器 -> 服务 -> DAO -> 数据库),并返回显示的结果列表在 myView.jsp 中,

下面的代码用于读取 JSP 中的 TO 数据:

<jsp:usebean id="myTO" type="com.myPackage.MyTO" scope="session"/>

在正文中,类似于

<%= myTo.getSomething() =%>

列表中的每个项目都可以单击以获取详细信息。因此,单击列表中的项目 2 时,将使用项目 2 的 id 进行另一个调用,以获取有关项目 2 的更多详细信息。

根据项目类型,将在不同的 TO 中获取详细信息。例如Type1TO、Type2TO。

因此,有关项目的详细数据会在此类 TO 中返回。

问题是:我在同一个 JSP 中显示详细信息。因此,第二个请求的 returnURL 被转发到 myView.JSP

因此,我放置了一行

<jsp:usebean id="type1TO" type="com.myPackage.Type1TO" scope="session"/>

,但是,当上面的 Type1TO 尚不存在时,这会在第一次调用列表搜索期间给出错误。错误类似于“无法在范围会话中找到 type1TO”

我该如何解决这个问题???

有没有办法将 jsp:usebean 标记放在 if 条件中要在正文中使用的位置?或者有其他解决方案吗?

我是 JSP 新手,正在处理旧版 JSP。因此非常先进的 JSP(复杂 EL)可能不可行。

I have a application which allows user to make a search.

Based on the search criteria entered, a service call to DAO function is made (pattern jsp event -> interceptors -> processors -> services -> DAO -> database) and list of results is returned back which gets displayed in myView.jsp

Code as below is used to read the TO data in JSP:

<jsp:usebean id="myTO" type="com.myPackage.MyTO" scope="session"/>

and in the body something like

<%= myTo.getSomething() =%>

Each item on the list is clickable for details. So on clicking item 2 on the list, another call will be made with item 2's id to fetch more details on item 2.

Depending on type of item, the details are fetched in different TO's. e.g. Type1TO, Type2TO.

So detailed data on item is returned in one such TO.

Issue is: I am displaying the details in the same JSP. So the returnURL of the second request gets forwarded to myView.JSP

So I have put a line like

<jsp:usebean id="type1TO" type="com.myPackage.Type1TO" scope="session"/>

However this gives error during the first call of list search when above Type1TO does not yet exist. Error is something like "unable to find type1TO in scope session"

How could I solve this issue ???

Is there a way to put jsp:usebean tag in an if condition in the place where it is to be used in the body ?? Or any other solution to this ??

I am new to JSP and dealing with legacy JSP. So very advanced JSP (complex EL) might not be feasible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

宁愿没拥抱 2024-12-21 12:40:08

的用法如下:

  1. 。在此示例中,通过创建或查找会话中现有的 id 的 bean 即可使用

  2. ;
    。在此示例中,将创建或找到 Bean,并使用 setProperty 对其进行实例化(如果正在创建)。
  3. 。在此示例中,找到现有 bean 并使其可用于给定类型。

The following are the usages of the <usebean>:

  1. <jsp:useBean id=”connection” class=”com.myco.myapp.Connection” /> . In this example the bean with the id is made available either by creating or finding the existing one in the session
  2. <jsp:useBean id=”connection” class=”com.myco.myapp.Connection”>
    <jsp:setProperty name=”connection” property=”timeout” value=”33”>
    </jsp:useBean>
    . In this example, the bean is created or found, and instatiated with the setProperty if it is being created.
  3. <jsp:useBean id=”wombat” type=”my.WombatType” scope=”session”/>. In this example the existing bean is found and made available with the given type.
王权女流氓 2024-12-21 12:40:08

如果转换为 Servlet,您的第一个代码片段将如下所示:

getAttribute("myTO");

是否使用单个属性或“具有 if-else 逻辑的多个属性”取决于您的具体情况。在不了解您的具体情况的情况下,我可以看到以下选项:

选项 1
无论您在何处设置 myTO 属性,请确保将值设置为同一变量,这样就不必在 jsp 中使用 if-else 逻辑。

选项 2
使用脚本

<%
  com.myPackage.MyTO toObject = session.getAttribute("myTo");
  if (toObject == NULL) {
      toObject = session.getAttrbute("type1TO");
  }
%>

If translated to Servlet, your first code snippet will look like:

getAttribute("myTO");

Whether to use a single attribute or 'multiple attributes with if-else logic' depends on your particular case. Without understanding your particular situation, I can see the following options:

Option 1
Wherever you are setting myTO attribute, ensure you set the value to the same variable, so that you don't have to use if-else logic in jsp.

Option 2
Use scripts

<%
  com.myPackage.MyTO toObject = session.getAttribute("myTo");
  if (toObject == NULL) {
      toObject = session.getAttrbute("type1TO");
  }
%>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文