【发布时间】:2009-07-20 20:22:15
【问题描述】:
我想为多个 Struts 动作呈现相同的 JSP。我遇到了麻烦,因为在渲染 JSP 时,bean 名称会根据调用的 Action 而有所不同。所以,我不能这样称呼:
<c:out value="${myBean.myProperty}" />
因为 bean 不一定叫 myBean。
目前,我通过将 JSP 中需要的任何常见对象放入 HttpSession 中来解决这个问题。例如:
public class SampleAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
String string = "TEST";
HttpSession session = request.getSession();
session.setAttribute("sampleString", string);
return mapping.findForward("sampleAction");
}
}
然后,在 JSP 中,我可以简单地引用“sampleString”,它不会根据渲染动作而改变。
当然,我使用的对象比字符串大得多,如果没有必要,我不想将对象放入会话中。有什么方法可以将一个对象放入页面上下文或其他东西而不是会话中,以便在不同的 JSP 之间共享它?
我来自 Rails 世界,所以我对 Struts 很陌生,发现自己有点迷茫。我必须扩展用 Struts 编写的现有应用程序。该程序实际上使用 BeanAction 将 ActionForm 与 Action 结合起来,因此上面的示例与我的代码不完全一样。
感谢您为我解惑!
【问题讨论】: