Web 应用程序中有两个页面
page1
和 page2
。
页面 page1
是基于 .xhtml 文件的 Facelet,page2
由 servlet 生成。
我们假设
page1.xhtml
看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="jakarta.faces.html"
xmlns:f="jakarta.faces.core"
>
<h:head>
<title>TODO supply a title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</h:head>
<h:body>
<h:button outcome="yolo" value="move on"/>
</h:body>
</html>
为了简单起见,让
page2
从以下 servlet 生成:
package tests;
import jakarta.inject.Inject;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/abc")
public class StorageSrv extends HttpServlet {
@Inject
private Storage storage;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("abc");
}
}
我还在
faces-config.xml
中添加了导航规则,如下:
<navigation-rule>
<from-view-id>
/flexible.xhtml
</from-view-id>
<navigation-case>
<from-outcome>
yolo
</from-outcome>
<to-view-id>
/abc
</to-view-id>
</navigation-case>
</navigation-rule>
如何从
page1
重定向到 page2
?
目前,导航规则添加了 .xhtml 扩展名,因此通过单击 page1
上的“继续”按钮,我得到 404。
显然,只需将 servlet 映射到带有
.xhtml
扩展名的路径即可完成这项工作。
例如:
@WebServlet(urlPatterns = "/abc.xhtml")