【发布时间】:2011-11-09 16:50:25
【问题描述】:
我有一个允许用户进行搜索的应用程序。
根据输入的搜索条件,对 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)可能不可行。
【问题讨论】:
-
我的理解是useBean标签会在指定范围内创建bean,如果它不存在的话。
-
这有什么前置要求吗?还是我的声明方式不对??
-
我不知道。我可能记错了。
-
好的。假设 JSP 在第一次调用中自行创建实例。当我在第二次调用期间在上下文中设置实例时,它会被覆盖吗???我可以访问数据吗?
-
它只创建不存在的对象。或者至少我认为这是它应该做的。
标签: spring jsp session usebean