Spring 可以在JSP中的条件上使用usebean吗?
我有一个应用程序,允许用户进行搜索 根据输入的搜索条件,对DAO函数进行服务调用的模式是jsp事件->拦截器->处理器->服务->DAO->数据库,返回结果列表,结果列表显示在myView.jsp中 下面的代码用于读取JSP中的to数据: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() =%> 列表中的每个项目都可以单击
<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在第一次调用中自己创建实例。在第二次调用期间,当我在上下文中设置实例时,会覆盖吗???我能访问数据吗?它只在对象不存在时创建对象。或者至少我认为这就是它应该做的。