【问题标题】:JSF page not displaying when run运行时不显示 JSF 页面
【发布时间】:2013-07-17 09:10:24
【问题描述】:

通过查看网络教程,我正在尝试创建一个演示 JSF 页面。当我尝试运行它时,页面显示为空白。即使没有标签的文本也不会显示。

index.html:

<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">

<h:head>
</h:head>

<h:body>
    <h:outputLabel  value="#{welcome.welcome()}"/>
</h:body>

welcome.java:

package ap.demojsf.welcome;

import javax.faces.bean.RequestScoped;
import com.sun.org.glassfish.gmbal.ManagedObject;

@ManagedObject()
@RequestScoped
public class welcome {

private String name;

public welcome() {
    this.name = "Welcome to the first page";
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
 }

如果我写一些简单的文本(没有任何标签),那么当我在浏览器中打开 index.html 时我可以看到,但是当我将它作为“运行方式”运行时没有显示任何内容。我已经安装了 Apache Tomcat 7。

有人可以指导我吗?

【问题讨论】:

  • html 标记中似乎有一个额外的反斜杠。你也应该关闭它。
  • 你的意思是直接在html/jsp页面上“运行为...”吗?
  • 对不起,这只是我在这里复制代码时的拼写错误。我已经更新了。
  • 可以,直接运行为。
  • 获取权威书籍。从我们的 JSF wiki 页面开始:stackoverflow.com/tags/jsf/info 我还强烈建议您事先学习基本的 Servlet,因为您似乎无法掌握整个 JSF 事物所基于的重要基本概念。不了解基本的 Servlet 会使 JSF 更难理解。

标签: java jsf jsf-2


【解决方案1】:

如果您的 index.html 是您的欢迎页面,请转到您的 web.xml,确保将 index.html 放在第一个添加 .html url- 模式如下所示 !!

默认情况下tomcat识别.faces中的url

  http://localhost:8080/YourProject/index.xhtml 

除非您添加模式 .xhtml,否则上面的 url 将不起作用

 http://localhost:8080/YourProject/index.faces 

这个可以!!

  <welcome-file-list>
     <welcome-file>index.xhtml</welcome-file>
  </welcome-file-list>

<servlet>
     <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
</servlet>
 <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
         <url-pattern>*.jsf</url-pattern>
        </servlet-mapping>
    <servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
 <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
     <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
   <servlet-name>Faces Servlet</servlet-name>
   <url-pattern>*.faces</url-pattern>
</servlet-mapping>
 <servlet-mapping>
 <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/faces/*</url-pattern>
   </servlet-mapping>

你应该用@ManagedBean 替换@ManagedObject

【讨论】:

  • 我应该在哪里添加 ?在 web.xml 的开头?
  • 我认为没有顺序,所以我会在 内的任何地方说!!测试前不要忘记重启服务器
  • 试过了,伙计。但不好。它只是说404错误。但是服务器工作正常。
  • 嗨,我想我明白了,如果您尝试在浏览器中使用 index.faces 访问该页面,它会起作用,这是由于 url 模式。您可以添加您将使用的模式,如上所示!希望它有所帮助:)
【解决方案2】:

你可以试试

<h:body>
    <h:outputLabel  value="#{welcome.name}"/>
</h:body>

【讨论】:

  • 试过了。问题是即使我没有使用这种方法。如果我尝试 hello 那么它也不会显示。代码似乎只是很好。问题在于为什么不显示结果
【解决方案3】:

html 标记替换为f:view。顺便说一句,不要忘记检查浏览器的代理设置。

【讨论】:

    猜你喜欢
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多