2012-01-06 40 views
6

Tôi chỉ mới bắt đầu với JSF 2.0 và tôi gặp vấn đề ngay từ đầu. Thẻ JSF không được phân tích cú pháp.Thẻ JSF không hiển thị - FacesServlet không hoạt động?

Dưới đây là một số chi tiết. Hy vọng ai đó có thể giúp đỡ vì không có câu hỏi nào liên quan đến SO có thể giải quyết được vấn đề của tôi.

hello.jsp

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

    <h:head> 

    </h:head> 

    <h:body> 
    <f:view> 
     asd 
     <h:inputText value="asd" label="UserName"></h:inputText> 
    </f:view> 
    </h:body> 
</html> 

gì tôi thấy khi điều hướng đến http://localhost:8080/JSFDeneme/pages/hello.jsp

Chỉ rõ asd

Xem nguồn http://localhost:8080/JSFDeneme/pages/hello.jsp

chính xác giống như các nội dung của hello.jsp

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

    <h:head>  
    </h:head>  
    <h:body> 
    <f:view>asd 
     <h:inputText value="asd" label="UserName"></h:inputText> 
     </f:view> 
    </h:body> 
</html> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     id="WebApp_ID" 
     version="3.0"> 
    <display-name>JSFDeneme</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    <welcome-file>hello.jsp</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>/faces/*</url-pattern> 
    <url-pattern>/pages/*</url-pattern> 
    <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
    <param-value>resources.application</param-value> 
    </context-param> 
    <context-param> 
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
    </context-param> 
    <context-param> 
    <description> 
    This parameter tells MyFaces if javascript code should be allowed in 
    the rendered HTML output. 
    If javascript is allowed, command_link anchors will have javascript code 
    that submits the corresponding form. 
    If javascript is not allowed, the state saving info and nested parameters 
    will be added as url parameters. 
    Default is 'true'</description> 
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <description> 
    If true, rendered HTML code will be formatted, so that it is 'human-readable' 
    i.e. additional line separators and whitespace will be written, that do not 
    influence the HTML code. 
    Default is 'true'</description> 
    <param-name>org.apache.myfaces.PRETTY_HTML</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name> 
    <param-value>false</param-value> 
    </context-param> 
    <context-param> 
    <description> 
    If true, a javascript function will be rendered that is able to restore the 
    former vertical scroll on every request. Convenient feature if you have pages 
    with long lists and you do not want the browser page to always jump to the top 
    if you trigger a link or button action that stays on the same page. 
    Default is 'false' 
</description> 
    <param-name>org.apache.myfaces.AUTO_SCROLL</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <listener> 
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 
    </listener> 
</web-app> 

faces-config.xml

<faces-config 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
    version="2.0"> 
</faces-config> 

Những gì tôi đã ở WEB-INF/lib

  • JSF 2.0 (Apache MyFaces JSF Core-2.0 API 2.0.2) - Eclipse tải về mà
  • JSTL-api-1.2.jar
  • JSTL-impl-1.2. jar
  • primefaces-3.0 lọ

gì Tomcat in để an ủi khi tôi khởi động lại máy chủ và điều hướng đến trang

01.235.

Có vẻ như không có gì lạ và không đề cập đến FacesServlet?

06.Oca.2012 22:26:55 org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\glassfish3\jdk\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\apache-ant-1.8.2\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\QuickTime\QTSystem\;. 
06.Oca.2012 22:26:56 org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:AjaxDenemeleri' did not find a matching property. 
06.Oca.2012 22:26:56 org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:RPGW_RestAPI' did not find a matching property. 
06.Oca.2012 22:26:56 org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:JSFDeneme' did not find a matching property. 
06.Oca.2012 22:26:56 org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
06.Oca.2012 22:26:56 org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
06.Oca.2012 22:26:56 org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 680 ms 
06.Oca.2012 22:26:56 org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
06.Oca.2012 22:26:56 org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.22 
06.Oca.2012 22:26:56 com.sun.jersey.api.core.PackagesResourceConfig init 
INFO: Scanning for root resource and provider classes in the packages: 
    sample.hello.resources 
06.Oca.2012 22:26:56 com.sun.jersey.api.core.ScanningResourceConfig logClasses 
INFO: Root resource classes found: 
    class sample.hello.resources.HelloResource 
    class sample.hello.resources.ContactsResource 
06.Oca.2012 22:26:56 com.sun.jersey.api.core.ScanningResourceConfig init 
INFO: No provider classes found. 
06.Oca.2012 22:26:57 com.sun.jersey.server.impl.application.WebApplicationImpl _initiate 
INFO: Initiating Jersey application, version 'Jersey: 1.10 11/02/2011 03:53 PM' 
06.Oca.2012 22:27:00 org.apache.catalina.core.StandardContext addApplicationListener 
INFO: The listener "org.apache.myfaces.webapp.StartupServletContextListener" is already configured for this context. The duplicate definition has been ignored. 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.SAVE_FORM_SUBMIT_LINK_IE' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_VIEWSTATE_ID' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.STRICT_XHTML_LINKS' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.RENDER_FORM_SUBMIT_SCRIPT_INLINE' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getLongInitParameter 
INFO: No context init parameter 'org.apache.myfaces.CONFIG_REFRESH_PERIOD' found, using default value 2 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.VIEWSTATE_JAVASCRIPT' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getStringInitParameter 
INFO: No context init parameter 'org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS' found, using default value auto 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.VALIDATE_XML' found, using default value false 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig getBooleanInitParameter 
INFO: No context init parameter 'org.apache.myfaces.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG' found, using default value true 
06.Oca.2012 22:27:00 org.apache.myfaces.shared_impl.config.MyfacesConfig createAndInitializeMyFacesConfig 
INFO: Tomahawk jar not available. Autoscrolling, DetectJavascript, AddResourceClass and CheckExtensionsFilter are disabled now. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator feedStandardConfig 
INFO: Reading standard config META-INF/standard-faces-config.xml 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator addClassloaderConfigurations 
INFO: Reading config : jar:file:/D:/documents/code/java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSFDeneme/WEB-INF/lib/primefaces-3.0.jar!/META-INF/faces-config.xml 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator getWebAppConfig 
INFO: Reading config /WEB-INF/faces-config.xml 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: Starting up MyFaces-package : myfaces-api in version : 2.0.2 from path : file:/D:/documents/code/java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSFDeneme/WEB-INF/lib/myfaces-api-2.0.2.jar 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: Starting up MyFaces-package : myfaces-impl in version : 2.0.2 from path : file:/D:/documents/code/java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSFDeneme/WEB-INF/lib/myfaces-impl-2.0.2.jar 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk12 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk-sandbox not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk-sandbox12 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tomahawk-sandbox15 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : myfaces-orchestra-core not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : myfaces-orchestra-core12 not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : trinidad-api not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : trinidad-impl not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : tobago not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : commons-el not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator startLib 
INFO: MyFaces-package : jsp-api not found. 
06.Oca.2012 22:27:00 org.apache.myfaces.util.ExternalSpecifications isBeanValidationAvailable 
INFO: MyFaces Bean Validation support disabled 
06.Oca.2012 22:27:00 org.apache.myfaces.config.annotation.DefaultAnnotationProvider webClasses 
WARNING: AnnotationConfigurator does not found classes for annotations in /WEB-INF/classes/ . This could happen because maven jetty plugin is used (goal jetty:run). Try configure org.apache.myfaces.annotation.SCAN_PACKAGES init parameter or use jetty:run-exploded instead. 
06.Oca.2012 22:27:00 org.apache.myfaces.application.ApplicationImpl getProjectStage 
INFO: Couldn't discover the current project stage, using Production 
06.Oca.2012 22:27:00 org.apache.myfaces.config.FacesConfigurator handleSerialFactory 
INFO: Serialization provider : class org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory 
06.Oca.2012 22:27:00 org.apache.myfaces.config.annotation.DefaultLifecycleProviderFactory getLifecycleProvider 
INFO: Using LifecycleProvider java.lang.String 
06.Oca.2012 22:27:01 org.apache.myfaces.webapp.AbstractFacesInitializer initFaces 
INFO: ServletContext 'D:\documents\code\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\JSFDeneme\' initialized. 
06.Oca.2012 22:27:01 org.primefaces.webapp.PostConstructApplicationEventListener processEvent 
INFO: Running on PrimeFaces 3.0 
06.Oca.2012 22:27:01 org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
06.Oca.2012 22:27:01 org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
06.Oca.2012 22:27:01 org.apache.catalina.startup.Catalina start 
INFO: Server startup in 4958 ms 

Mọi trợ giúp đều được đánh giá cao.

Trả lời

11

hello.jsp

Đây không phải là phần mở rộng đúng.

Kể từ JSF 2.0, JSP is deprecated and replaced by Facelets. Facelets là một công nghệ xem dựa trên XML và phải được viết trong các tệp .xhtml. Tuy nhiên, dường như bạn đã sử dụng cú pháp Facelets hợp lệ trong tệp JSP của mình. Tất cả những gì bạn cần làm là chỉ đổi tên hello.jsp thành hello.xhtml.

Tôi cũng khuyên bạn nên thay thế tất cả các mẫu URL bằng một mẫu URL đơn lẻ *.xhtml.

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 

để bạn có thể mở nó bằng cách http://localhost:8080/JSFDeneme/hello.xhtml mà không gặp khó khăn với URL ảo.

Tôi không chắc sách/hướng dẫn bạn đã đọc đã làm cho bạn sử dụng phần mở rộng JSP. Có lẽ bạn đang đọc một kết hợp của JSF 1.x và JSF 2.x hướng dẫn nhắm mục tiêu. Bạn cần đảm bảo rằng bạn đang đọc các hướng dẫn cụ thể của JSF 2.x. Ở dưới cùng của our JSF wiki page bạn có thể tìm thấy một số liên kết hướng dẫn JSF 2.x.

+0

tôi đổi tên thành 'hello.jsp' cho 'hello.xhtml' nhưng sau đó khi tôi hướng đến' http:// localhost: 8080/JSFDeneme/pages/hello.xhtml', tôi nhận được thông báo 'Rất tiếc! Liên kết này dường như bị hỏng.' trang? Tôi nên điều hướng đến đâu để xem trang? –

+0

Nếu bạn đã thay thế mẫu URL, bạn cần xóa '/ trang' khỏi URL. Xem thêm URL ví dụ trong câu trả lời của tôi. – BalusC

+0

Hoạt động như một sự quyến rũ của BalusC! Cảm ơn rất nhiều. Còn 2 câu hỏi nữa, bạn sẽ đề xuất 'DOCTYPE' nào? Hoặc bạn thậm chí sẽ đề nghị sử dụng một? Và thứ hai, tôi có phải sử dụng phần mở rộng '.xhtml' không? Tôi có thể sử dụng thứ gì đó khác như '.do' hay gì đó tùy ý không? Bởi vì khi phần mở rộng tập tin là '.xhtml' và tôi thêm một' url-mapping' khác, chẳng hạn như '.jsf', nó không hoạt động. –

1

Tôi đoán rằng, khi bạn đang gọi URL .jsp bạn đang hiển thị trang qua servlet JSP cũ tốt (bạn có URL /pages/* được ánh xạ tới servlet Faces, nhưng ánh xạ mở rộng JSP có thể được ưu tiên).

Bạn có thể thử đổi tên trang của mình thành một số .jsf và gọi đó không?

+0

Thật không may, đổi tên thành '.jsf' không hoạt động, cũng không phải' .xhtml' –

+0

Đổi tên thành '.jsf' sẽ thực sự không hoạt động theo bất kỳ cách nào. Hậu tố Facelets mặc định là '.xhtml'. – BalusC

+0

Đổi tên phần mở rộng của tệp thành '.jsf' và thay đổi các ánh xạ url tương ứng. Tôi điều hướng đến trang và giao diện điều khiển của Eclipse đã phát điên! Threw ngoại lệ trong một vòng lặp vô hạn cho đến khi tôi đã phải lực lượng và đóng nó :) –

-2

cố gắng để đưa đoạn mã sau trong web.xml của bạn


<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 

    id="WebApp_ID" version="3.0"> 

<display-name>jsfexample</display-name> 

<servlet> 

    <servlet-name>faces</servlet-name> 

    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 

    <load-on-startup>1</load-on-startup> 

</servlet> 

<servlet-mapping> 
    <servlet-name>faces</servlet-name> 

    <url-pattern>*.xhtml</url-pattern> 

</servlet-mapping> 

Các vấn đề liên quan