【发布时间】:2013-04-05 13:44:02
【问题描述】:
我有一个控制器,用户可以在其中将信息填写到表单中。保存表单时,会创建 JPA 对象并将其持久化到数据库中,并且用户会被重定向到另一个控制器以查看表单。我对在控制器之间传递整个对象不感兴趣,只是表示对象的字符串。我可以从数据库中重新加载对象,但是由于加载时间很慢,有什么方法可以在不访问数据库的情况下传递数据?
编辑: 当一个控制器重定向到另一个控制器时,我有兴趣将字符串从第一个控制器“发送”到重定向的控制器,以便显示这些字符串。
感谢您的帮助!
编辑 2:
这是第一个控制器中的代码:
//Called by a commandButton
public String saveForm() {
//Objects are created and persisted to DB
//Store the Objects' names as strings. These are the values I want to access in the second controller
return "view_form.jsf?formId=" + formId.toString() + "&faces-redirect=true";
}
在名为viewForm 的第二个控制器中,我正在使用viewParam 加载formId:
<f:metadata>
<f:viewParam name="formId" value="#{secondController.formId}" required="true"/>
<f:event type="preRenderView" listener="#{secondController.loadForm}"/>
</f:metadata>
在loadForm 中,我想访问在saveForm 中创建的字符串。
我目前正在查看 Rodmar Conde 发布的关于在 Session Map 中存储数据的链接。这是解决这个问题的正确方法吗?
感谢您迄今为止的帮助!
【问题讨论】:
-
我不确定我是否理解您的具体问题。如果您的意思是像
action="#{otherBean.doSomething(oneBean.entity)}"那样在 viewscoped bean 之间传递数据,那么这些数据不会以任何方式暴露在 HTML/HTTP 中,并且不可能影响“加载时间”。请澄清具体问题。 -
@BalusC 我已将我的问题编辑为更具描述性。
-
这真的是重定向到新的 GET 请求还是回发时的导航(转发)?
-
您可以在控制器1中将字符串保存到HttpSession对象中,然后您可以在控制器2中恢复它们。 Saving data to session in JSF
-
@BalusC 我不完全确定我是否理解其中的区别。当按下“保存”命令按钮时,我的支持 bean 中的一个动作被调用,我计划从那里重定向到另一个控制器/页面。抱歉,不清楚,我刚刚开始使用 JSF/JEE。
标签: jsf view-scope