带有 JSF 插件的 Struts2/JSP

Struts2/JSP with JSF Plugin

提问人:ZeroBrush 提问时间:10/19/2023 最后编辑:Roman CZeroBrush 更新时间:11/18/2023 访问量:45

问:

在我的公司中,我们有一个使用 Struts2 运行的遗留 Web 应用程序,它使用 JSP 页面作为前端,一切都在 Tomcat 7 下运行。

现在,我们要求向这个 Web 应用程序添加更多页面,但这是一个遗留项目,我们不想触及它,所以我想到了将 Web Fragment 项目与 JSF 一起使用的想法(我们更熟悉它)。

我是如何做到的:

  • 为了将 Web Fragment 集成到 Web 应用程序中,我将生成的 jar 文件放在 Tomcat 的“lib”文件夹中。
  • 为了使 Struts2 与 JSF 一起工作,我集成了 Apache JSF 插件

到目前为止进展顺利,托管 Bean 已正确启动,xhtml 页面工作正常,但我有一个问题,Struts 2 项目中的所有页面都是用 JSP 制作的,在其中一个页面中,我包含了我的 xhtml 按钮,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jstl/core">

    <h:form id="myForm">
        <h:commandButton id="mybutton" actionListener="#{testMB.showMessage}"
            value="Show Message">
        </h:commandButton>
        <h:message for="mybutton" />
    </h:form>
</ui:composition>

“test.xhtml”包含在 JSP 页面中,如下所示:

<s:include value="/test.xhtml" />

直到这里一切正常,在 jsp 页面中显示我的 jsf 按钮,问题是当我单击该按钮时,因为 JSF 试图将我重定向到一个显然不存在的页面“test.jsp”。 在我的各种测试中,我注意到调用的 JSP 页面会随着调用该操作的 xhtml 页面的名称而更改。 如果我只是导航到“test.xhtml”, 当我单击按钮时,该页面可以正常工作并向我显示消息,但显然我看到的是只有按钮的空白页面。

这两种实现在页面处理方面的工作方式非常不同,一方面 JSF 尝试重新加载实际页面,另一方面,在 JSP 页面中,一切都使用 JavaScript 处理,页面永远不会更改,只有中心 div。

我只想阻止 JSF 加载整个页面而不会丢失它周围的 JSP 页面,我该怎么做?

JSP JSF 支柱 2

评论

0赞 Jasper de Vries 10/19/2023
请改进您的标题。
0赞 Roman C 10/20/2023
你没有很好地解释你的问题。无法理解您是如何将 JSF 与 Struts 2 集成在一起的。它们是不同的框架,执行相同的工作 - 为 https 请求提供服务。但有不同的技术。但是,两者都是基于 servlet 的,并且可以使用 JSP。
0赞 ZeroBrush 10/20/2023
希望更好,我更新了标题和描述
0赞 Roman C 11/18/2023
JSF 插件已经过时(从 2.5 开始删除),如果您使用 JSP,最好使用 tiles 插件或 freemarker。

答: 暂无答案