在我的index.xhtml上,我有Java Server Face组件,这些组件可以正确显示并使用托管bean。但是,如果我链接到任何其他页面,甚至是带有完全相同代码的页面,这些页面将不会显示这些组件,只会显示文本。
假设index.xhtml是这样的,并正确显示:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:inputText value="#{user.name}"/>
<h:commandButton action="#{user.submit}" value="Submit" />
</h:form>
</h:body>
</html>如果我添加指向任何其他页面的链接(即使是具有相同代码的页面),也不会为它们显示JSF组件。这是因为其他页面可能无法“看到”托管bean吗?还是别的什么?
谢谢你的帮助。
发布于 2011-03-20 18:52:54
看起来想要调用的页面不是由Faces Servlet处理的。
在应用程序的web.xml中,您可以定义将由该servlet处理的服务器请求的url模式。默认情况下,这通常是/faces/*。这意味着您调用的链接必须包含此模式才能被Faces Servlet处理。
如果使用Netbeans创建项目,映射通常如下所示:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>因此,请尝试使用包含此url模式的链接或使用相对链接。
如果您使用h:link而不是a:href,则url-pattern将自动作为前缀:
<h:link value="My other page" outcome="otherpage" />将呈现为:
<a href="/yourAppName/faces/otherpage.xhtml">My other page</a>https://stackoverflow.com/questions/5367918
复制相似问题