【发布时间】:2014-11-11 18:16:59
【问题描述】:
更新
由于问题本身发生了一些变化(结果更多的是关于列表/下拉列表,我提出了一个关于数据传递问题的新问题:new question
我正在尝试编写一个应用程序,其中我首先有一个对象列表,然后导航到仅显示一个对象的页面。每个对象都有一个其他几个对象的列表(在我的程序中,它是一个考试列表,每个考试都有一个问题列表)。然后我按下一个按钮被定向到第三个页面,在那里我可以填写一个表单来创建一个新的附加对象。
保存附加对象时,我想重定向到显示与以前相同的对象的第二页。 这是我的问题。我返回的页面上的表单域是空的。
现在,当调用 SaveAttachedObject 操作(AttachedObjectAction,方法“保存”)时,我被重定向到 object.jsp。但是,没有选择任何对象,当我单击objectlist.jsp 中的编辑按钮并且没有选择对象时,我通常会调用该错误消息。此消息在ObjectAction 的 validate 方法中产生,该方法通常检查 object 或 attachObject 是否为 null。
我怀疑 object.jsp 的输入丢失了。
在我的 struts.xml 中,我有 SaveAttachedObject 操作,该操作将 attachObject.jsp 作为输入,因此应该存在 attachObject(包括其变量对象)。 在那里我调用了显示对象的 ShowObject Action。
<action name="SaveAttachedObject" class="de.example.project.action.AttachedObjectAction"
method="save">
<result name="success" type="redirect">ShowObject.action</result>
<result type="tiles" name="input">attachedObjectForm</result>
</action>
<action name="ShowObject" class="de.example.project.action.ObjectAction"
method="load">
<result type="tiles">objectForm</result>
</action>
(所有瓦片都在tiles.xml中定义)
如果我添加一个
<result name= "input" type="tiles">attachedObjectForm</result>
到 ShowObject 动作。我总是收到“下拉列表”无法解析为集合/数组/映射/枚举/迭代器类型的错误:
HTTP Status 500 - ServletException including path '/layout/mainLayout.jsp'.
堆栈跟踪:
tag 'select', field 'list', name 'attachedObject.type': The requested list key 'objectTypes' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
这是带有导致错误的选择字段的附加对象.jsp:
我不知道我是否可以只将对象(id)提供给 ShowObject 动作而不是整个 attachObjectForm?
或者,我不明白:为什么要读取整个 objectTypes 列表?我只想使用attachedObject(只使用列表中的选中项作为attachedObject的新参数)。
如果您需要任何进一步的代码或信息,请告诉我。
以下是我项目主要类的相关代码部分:
ObjectAction:http://pastebin.com/q080N1NB
attachedObjectForm:http://pastebin.com/m2HMXHwP
【问题讨论】:
-
+1 适合初学者的好问题!
-
看起来您缺少 (a) 某种形式的
prepare实现,其中准备了必要的表单数据,以及 (b) 加载相关对象。 -
我需要把准备实现放在哪里?在 ObjectAction 中?我知道我可以在那里启动导致错误的 objectTypes 列表,但我仍然不知道,我将在哪里获得我之前正在处理的附加对象(它具有它所属的对象 ID,并且我想在其上显示我要返回的页面)
标签: hibernate jsp redirect struts2