java - 在不同的 Struts 操作类之间有效地共享 JSP

标签 java jsp struts

我想为多个 Struts 操作呈现相同的 JSP。我遇到了麻烦,因为在渲染 JSP 时,bean 名称根据调用的操作而不同。所以,我不能这样称呼:

<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”,它不会根据渲染Action而改变。

当然,我使用的对象比字符串大得多,如果不需要,我不想将对象放入 session 中。有什么方法可以将对象放入页面上下文或其他内容中,而不是 session 中,以便在不同的 JSP 之间共享它?

我来自 Rails 世界,所以我对 Struts 非常陌生,并且发现自己有点迷失。我必须扩展用 Struts 编写的现有应用程序。该程序实际上使用 BeanAction 将 ActionForm 与 A​​ction 组合起来,因此上面的示例并不完全是我的代码的样子。

感谢您帮助解决我的困惑!

最佳答案

我的第一个想法是尝试将其实现为自定义标签,就像 krosenvold 在他的回答中所说的那样。但您说您是 Struts 新手,我假设您对 JSP 和 J2EE Web 开发也是新手。自定义标签并不是一个很容易的主题。

您可以使用“代理”页面通过 jsp 进行调用:包括您的目标 JSP。 jsp:include 标记可以有一个包含 jsp:param 标记的主体,您可以在其中将公共(public)变量名称映射到不同的引用。

See here for an example in jsp:param in jsp:include .

通过这样做,您将拥有一个包含真实代码的页面,以及 N 个代理来处理对复杂对象的引用。 使用自定义标签也可以,这只是另一种实现方式,我个人认为对于非 SCWCD 来说更容易实现。

关于java - 在不同的 Struts 操作类之间有效地共享 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1155752/

相关文章:

java - 数组编程 - N 个玩家的 Tic Tac Toe nxn 板

java - 关闭从eclipse启动的远程调试的tomcat

javascript - Netbeans 字段验证(字母\数字\长度)

java - 如何在 Struts 2 中格式化货币?

java - 如何将请求从同一个 JSP 文件发送到多个 Servlet?

java - 如何在 servlet 中获取消息资源对象?

java - 单个 Spring @Transaction 中的两个 dao 方法

java - java中如何将负 double 值转换为二进制值?

java - 在 JSP 中将按钮标题设置为 bean 消息

jquery - 关于 Struts 2 和 Struts-jQuery 自动完成器的问题