Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 可以在JSP中的条件上使用usebean吗?_Spring_Jsp_Session_Usebean - Fatal编程技术网

Spring 可以在JSP中的条件上使用usebean吗?

Spring 可以在JSP中的条件上使用usebean吗?,spring,jsp,session,usebean,Spring,Jsp,Session,Usebean,我有一个应用程序,允许用户进行搜索 根据输入的搜索条件,对DAO函数进行服务调用的模式是jsp事件->拦截器->处理器->服务->DAO->数据库,返回结果列表,结果列表显示在myView.jsp中 下面的代码用于读取JSP中的to数据: <jsp:usebean id="myTO" type="com.myPackage.MyTO" scope="session"/> 在身体里,就像 <%= myTo.getSomething() =%> 列表中的每个项目都可以单击

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

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

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

<jsp:usebean id="myTO" type="com.myPackage.MyTO" scope="session"/>
在身体里,就像

<%= myTo.getSomething() =%>
列表中的每个项目都可以单击以了解详细信息。因此,单击列表中的项目2时,将使用项目2的id进行另一次调用,以获取关于项目2的更多详细信息

根据项目的类型,详细信息以不同的收件人获取。e、 g.类型1到,类型2到

因此,有关该项目的详细数据将以这样一种方式返回给

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

所以我放了一条线,像

<jsp:usebean id="type1TO" type="com.myPackage.Type1TO" scope="session"/>
但是,当上述类型1TO还不存在时,在第一次调用列表搜索时会出现错误。错误类似于在作用域会话中找不到type1TO

我怎样才能解决这个问题

有没有一种方法可以将jsp:usebean标记放在一个if条件中,在主体中使用它的地方??或者其他解决方案


我不熟悉JSP,也不熟悉遗留JSP。因此,非常高级的JSP复杂EL可能不可行。

以下是的用法:

. 在本例中,id为的bean可以通过在会话中创建或查找现有bean来使用 . 在本例中,创建或找到bean,如果正在创建它,则使用setProperty进行安装。 . 在本例中,找到现有bean,并使其可用于给定类型。
如果转换为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");
  }
%>

我的理解是,useBean标记将在指定的范围内创建bean,如果它不存在的话。这有什么先决条件吗?还是我的声明方式不正确?我不知道。我可能记错了。假设JSP在第一次调用中自己创建实例。在第二次调用期间,当我在上下文中设置实例时,会覆盖吗???我能访问数据吗?它只在对象不存在时创建对象。或者至少我认为这就是它应该做的。