samedi 30 août 2014

Adding faces-config.xml to Web Project Result to RES_NOT_FOUND


Vote count:

0




It is quite strange when I add faces-config.xml file in WEB-INF in my project it cause me an error "RES_NOT_FOUND" note: I have try <link type="text/css" rel="stylesheet" href="style.css" /> and it's working fine without the faces-config.xml. I also try to move it inside resources folder


I have try to use this code to add a css file for my .xhtml page



<h:head>
<h:outputStylesheet name="styles.css" />
</h:head>


it will generate the following



<link type="text/css" rel="stylesheet" href="RES_NOT_FOUND">


I am using JSF 2.2 + Google App Engine as I follow the tutorial from this site


http://ift.tt/1qdkYt8


the tutorial went good except until I try to import a external files like .css, .js, and image files; and when I access it directly from the link like localhost:8080/style.css the css file will display correctly.


here is my code


the web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://ift.tt/nSRXKP" xmlns:xsi="http://ift.tt/ra1lAU" xsi:schemaLocation="http://ift.tt/nSRXKP http://ift.tt/LU8AHS">
<display-name>
My App
</display-name>
<description>
Template JSF 2.2 application configured to run on the Google
AppEngine for Java.
</description>
<!-- ***** Designate client-side state saving. ***** -->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<!-- Set the default suffix for JSF pages to .xhtml -->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<!-- Disable use of threading for single-threaded environments such as the Google AppEngine. -->
<context-param>
<param-name>com.sun.faces.enableThreading</param-name>
<param-value>false</param-value>
<!-- <description>
When enabled, the runtime initialization and default ResourceHandler
implementation will use threads to perform their functions. Set this
value to false if threads aren't desired (as in the case of running
within the Google Application Engine).

Note that when this option is disabled, the ResourceHandler will not
pick up new versions of resources when ProjectStage is development.
</description>-->
</context-param>
<!-- ***** Specify JBoss Expression Language Over Default -->
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
<!-- ***** Load the JavaServer Faces Servlet ***** -->
<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>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>commons</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config1.xml</param-value>
</context-param>
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>2147483647</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
</web-app>


the index.xhtml



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ift.tt/kTyqzh">
<html xmlns="http://ift.tt/lH0Osb"
xmlns:h="http://ift.tt/HjFrZb"
xmlns:f="http://ift.tt/HcrI1S"
xmlns:ui="http://ift.tt/KsEgXx"
xmlns:p="http://ift.tt/HjFrZc">
<h:head>
<f:facet name="first">
<meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
<title>There is Hope!</title>
</f:facet>
<h:outputStylesheet name="style.css" />
</h:head>
<h:body>
<h:graphicImage url="logo.png"/>//this line works!
<br />
Hello from Facelets
<br />
<h:link outcome="welcomePrimefaces" value="Primefaces welcome page" />
</h:body>
</html>


the appengine-web.xml



<?xml version="1.0" encoding="UTF-8"?>
<appengine-web-app xmlns="http://ift.tt/Uz97W6"
xmlns:xsi='http://ift.tt/ra1lAU'
xsi:schemaLocation='http://ift.tt/1qdkYtc appengine-web.xsd'>
<application>RetailSmarts</application>
<version>1</version>


<!--Allows App Engine to send multiple requests to one instance in parallel:-->
<threadsafe>true</threadsafe>

<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
<sessions-enabled>true</sessions-enabled>
<async-session-persistence enabled="true"></async-session-persistence>

</appengine-web-app>


the faces-config.xml(without this my web project works fine but I plan to use it later for these What is the use of faces-config.xml in JSF 2?



<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2" xmlns="http://ift.tt/nSRXKP"
xmlns:xsi="http://ift.tt/ra1lAU"
xsi:schemaLocation="http://ift.tt/nSRXKP http://ift.tt/1oV7Feo">
<application>
<lifecycle>
<phase-listener>package.SessionPhaseListener</phase-listener>
</lifecycle>
</application>
</faces-config>


the SessionPhaseListener.java



public class SessionPhaseListener implements PhaseListener, Serializable {

private static final long serialVersionUID = 1L;

@Override
public void afterPhase(PhaseEvent arg0) {
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("CURRENT_TIME", System.currentTimeMillis());
}

@Override
public void beforePhase(PhaseEvent arg0) {
}

@Override
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}


the tutorial stated I need to add the PhaseListener to Ensure the Contents of HttpSession Are Saved


Can anyone point which part of my project causes the error. I really want to use faces-config.xml without having a error. My whole point is, I cannot import css, js and other file with faces-config.xml present in my project. Is there any configuration or information I missed for JSF and GAE setup.



asked 49 secs ago







Adding faces-config.xml to Web Project Result to RES_NOT_FOUND

Aucun commentaire:

Enregistrer un commentaire