首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glassfish不显示JSF组件

Glassfish不显示JSF组件
EN

Stack Overflow用户
提问于 2011-03-20 18:32:33
回答 1查看 2.9K关注 0票数 0

在我的index.xhtml上,我有Java Server Face组件,这些组件可以正确显示并使用托管bean。但是,如果我链接到任何其他页面,甚至是带有完全相同代码的页面,这些页面将不会显示这些组件,只会显示文本。

假设index.xhtml是这样的,并正确显示:

代码语言:javascript
复制
<?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吗?还是别的什么?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-20 18:52:54

看起来想要调用的页面不是由Faces Servlet处理的。

在应用程序的web.xml中,您可以定义将由该servlet处理的服务器请求的url模式。默认情况下,这通常是/faces/*。这意味着您调用的链接必须包含此模式才能被Faces Servlet处理。

如果使用Netbeans创建项目,映射通常如下所示:

代码语言:javascript
复制
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

因此,请尝试使用包含此url模式的链接或使用相对链接。

如果您使用h:link而不是a:href,则url-pattern将自动作为前缀:

代码语言:javascript
复制
<h:link value="My other page" outcome="otherpage" />

将呈现为:

代码语言:javascript
复制
<a href="/yourAppName/faces/otherpage.xhtml">My other page</a>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5367918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档