提问人:ZeroBrush 提问时间:10/19/2023 最后编辑:Roman CZeroBrush 更新时间:11/18/2023 访问量:45
带有 JSF 插件的 Struts2/JSP
Struts2/JSP with JSF Plugin
问:
在我的公司中,我们有一个使用 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 页面,我该怎么做?
答: 暂无答案
评论