一个Struts2新手问题
情况是这样的。
我有3个动作 1. 动作/create_something 2. 动作/save_something 3. action/preview_something
我从 www.site.com/action/create_something 开始,
填写一些信息并提交一个表单,该表单传递给 save_something 操作
save_something 根据表单输入创建一个对象 foo 。 foo 现在有一个字段调用 ID(“123”)。然后,它将 foo 中的一些相关数据保存到数据库中,并使用 id 参数转发到preview_something。
现在我在 www.site.com/action/preview_something?id=123
我获取 id 并通过访问数据库创建 foo 。在页面上我显示了 foo 中的各个字段。
好吧...我的问题是这样的:
是否有必要将 id 传递给 action/preview_something 并再次访问数据库? 我还可以使用 foo 吗?我的对象 foo 是否仍然存在于我的操作类的范围内?
很抱歉这里发生了新鲜事。
Here is the situation.
I have 3 actions
1. action/create_something
2. action/save_something
3. action/preview_something
I start at www.site.com/action/create_something
I fill in some info and submit a form which passes to the save_something action
save_something creates an object foo based on the form inputs. foo now has a field call id ("123"). It then saves some data relevant from foo into the database and forwards to preview_something with the id parameter.
Now I am at www.site.com/action/preview_something?id=123
I take the id and create foo by hitting the database. On the page I display the various fields in foo.
Ok... my question is this:
Is it necessary to pass id to action/preview_something and hit the database again?
Is foo still available to me? Does my object foo still exist in the scope of my action class?
Sorry for the newbishness going on here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的,在您的案例中,参数在预览中不再可用。
可能的解决方案#1:
您的struts Action可以实现 ServletRequestAware。然后,您可以在
save()
方法中将 foo 对象保存到会话中,然后在preview()
中读取它。可能的解决方案#2:
在
save()
中,您只需返回preview()
,整个作用域(对象 foo、参数...)将保持与中相同保存()
。这将是最简单的方法。
Ok, parameter is not available anymore in preview with your case.
Possible solution #1:
Your struts Action can implement ServletRequestAware. Then you can save your foo object to session in
save()
method and then read it inpreview()
.Possible solution #2:
In your
save()
you can just returnpreview()
and whole scope (object foo, parameters,...) will stay the same as insave()
.This would be the easiest way to do it.