【发布时间】:2010-02-08 13:18:26
【问题描述】:
我们有一个运行 struts 1.2 和 velocity 的成熟应用程序,我需要将页面从 vm 转换为 jsp。
所以我修改了我的 struts-config 以将转发更改为新的 JSP 文件,并在 JSP 中尝试显示分配给表单 bean 的一些数据,但所有表单属性在 JSP 中显示为空。当我查看表单本身时,我发现它们是不同的对象。所以不知何故,我在 Action 中使用的表单 bean 与 JSP 看到的不一样。
有什么想法吗?
<form-beans>
<form-bean name="scheduleDisplayForm" type="web.scheduler.ScheduleDisplayForm"/>
</form-beans>
<action-mappings>
<action path="/displaySchedule"
type="web.scheduler.ScheduleDisplayAction"
name="scheduleDisplayForm" scope="request" parameter="method">
<!--<forward name="success" path="/scheduler/scheduler.vm"/>-->
<forward name="success" path="/scheduler/scheduler.jsp"/>
</action>
</action-mappings>
在我的 JSP 中,我只是在尝试这个:
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ taglib prefix="b" uri="http://jakarta.apache.org/struts/tags-bean" %>
<jsp:useBean id="schedule" class="web.scheduler.ScheduleDisplayForm" scope="request"/>
<!-- display the object -->
<%=schedule%>
<!-- shows NULL -->
<%=schedule.getRoomsToDisplay()%>
【问题讨论】:
-
您能否澄清一下:“当我查看表单本身时,我发现它们是不同的对象。”有点?
-
Form 对象实际上是不同的对象。在操作中,我会记录它并显示:jsp 中的 web.scheduler.ScheduleDisplayForm@32f25d 它是一个不同的对象:web.scheduler.ScheduleDisplayForm@26c21d
-
您是否在您的操作和您的 JSP 之间进行任何重定向?另请注意,
元素定位或实例化一个 JavaBeans 组件,不确定您是否正确检索 bean,它没有找到并创建一个。请求范围内的名称应与“scheduleDisplayForm”相关。作为一个测试列表,JSP 中的所有请求属性都可以查看范围内绑定的内容并查看“scheduleDisplayForm”是否存在。