Trying to do an ajax upload with JSF inputFile
<h:body>
<h:form enctype="multipart/form-data">
<h:inputFile id="file" value="#{uploadController.upfile}">
<f:ajax listener="#{uploadController.handleUpload}" />
</h:inputFile>
</h:form>
</h:body>
when i choose file, my page is refreshed with a javascript error
Uncaught TypeError: Cannot call method 'getAttribute' of undefined jsf.js.xhtml?ln=javax.faces&stage=Development:2734
Getting same error with a simple inputText
<h:body>
<h:form enctype="multipart/form-data">
<h:inputText id="test" value="#{testController.test}">
<f:ajax />
</h:inputText>
</h:form>
</h:body>
It's work when i remove enctype="multipart/form-data"
My JSF dependencies are
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.4</version>
</dependency>
Jsf js file loaded by browser Download
Thanks
Related
This question already has answers here:
Submitting a form by pressing enter without a submit button
(20 answers)
Closed 1 year ago.
After deploy this code i go to browser and put some data in input field and press enter. It should add text to chips but it doesn't i don't have idea why plaease help.
xhtml code
<?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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Chips</title>
</h:head>
<h:body>
Chips
<br/>
<h:form>
<h:panelGrid columns="2">
<p:outputLabel value="Add Color"/>
<p:chips />
<p:outputLabel for="display" value="Avaiable Colors"/>
<p:chips id="display" value="#{colors.colors}"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
I use this java class for xhtml with use JSF and PrimeFaces.
#ViewScoped
#Data
#Named
public class Colors implements Serializable{
private List<String> colors;
#PostConstruct
public void init() {
colors = new ArrayList<>();
colors.add("Red");
colors.add("Blue");
colors.add("Green");
colors.add("Yellow");
colors.add("Orange");
colors.add("Purple");
}
}
This is my pom.xml file maybe here something is missing. Please help it's look everything fine.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pl.mz</groupId>
<artifactId>Primefaces-YtTutorial</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<jakarta.jakartaee-api.version>8.0.0</jakarta.jakartaee-api.version>
<microprofile.version>3.0</microprofile.version>
<mockito-core.version>3.1.0</mockito-core.version>
<junit-jupiter.version>5.5.0</junit-jupiter.version>
</properties>
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>${jakarta.jakartaee-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.microprofile</groupId>
<artifactId>microprofile</artifactId>
<version>${microprofile.version}</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>11.0.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito-core.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
</dependencies>
<build>
<finalName>Primefaces-YtTutorial</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
</project>
I add not visible commandButton and this start work corectly. But i hope someone will show me beter why to solve this issue or will point some bug in my code. I leave my solution here.
<h:form>
<h:panelGrid columns="2">
<p:outputLabel value="Add Color"/>
<p:chips/>
<p:outputLabel for="display" value="Avaiable Colors"/>
<p:chips id="display" value="#{colors.colors}"/>
</h:panelGrid>
<p:commandButton rendered="false"/>
</h:form>
I work with PrimeFaces 5.2.
These are my maven dependencies:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>5.2</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.7</version>
</dependency>
</dependencies>
I have the XHTML:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html">
<h:head />
<h:body>
<h:outputLabel>Name:</h:outputLabel>
<h:form>
<p:spinner />
</h:form>
</h:body>
</f:view>
</html>
The output screen is
How do I have to configure my project to see the spinner?
I think you should read the documentation for a spinner in Primefaces. Spinner is primarily used to increment/decrement the value of input text. You also need to create a bean defining the setter/getter for the values.
Do have a look https://www.primefaces.org/showcase/ui/input/spinner.xhtml
Just for reference:
<h:outputLabel for="basic" value="Basic Spinner: " />
<p:spinner id="basic" value="#{spinnerView.number1}" />
Hope it helps!!
I just tried to just copy-paste sample from PrimeFaces Showcase about Barcode.
Here is this code, and I get:
I just wanted to test it go get same effect as sample.
<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:pm="http://primefaces.org/mobile"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<p:panelGrid columns="2">
<h:outputText value="Postnet" />
<p:barcode value="0123456789" type="postnet"/>
<h:outputText value="QR" />
<p:barcode value="0123456789" type="qr"/>
</p:panelGrid>
</h:body>
Have you add barcode4j and qrgen library into your dependency?
<dependency>
<groupId>net.glxn</groupId>
<artifactId>qrgen</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>net.sf.barcode4j</groupId>
<artifactId>barcode4j-light</artifactId>
<version>2.1</version>
</dependency>
**barcode4j 2.1 does not exist in maven central repository so manual installation is necessary for
maven users
you need to add a jar file to your repository to let primefaces understand the component much better. You can get the jar from here http://www.barcodelib.com/java_barcode/barcode_symbologies. That is the "barcode4j-light version 2.1"
I'm learing RichFaces now for my JSF project, but i have problem with rendering rich components in my enviroment.
I have added RichFaces jar(all 4 jars from RichFaces page) to JBoss modules (E:\JBoss\modules\org\richfaces\main) with module.xml:
<module xmlns="urn:jboss:module:1.1" name="org.richfaces">
<resources>
<resource-root path="richfaces-components-api-4.2.1.Final.jar"/>
<resource-root path="richfaces-components-ui-4.2.1.Final.jar"/>
<resource-root path="richfaces-core-api-4.2.1.Final.jar"/>
<resource-root path="richfaces-core-impl-4.2.1.Final.jar"/>
<!-- Insert resources here -->
</resources>
<dependencies>
<module name="org.w3c.css.sac"/>
<module name="net.sourceforge.cssparser"/>
<module name="com.sun.jsf-impl"/>
<module name="javax.api"/>
<module name="javax.faces.api"/>
<module name="javax.xml.bind.api"/>
<module name="javax.xml.jaxp-provider"/>
<module name="com.google.guava"/>
</dependencies>
</module>
All dependencies were added to jboss modules by default configuration.
I created simple JSF page with RichFaces from tutorial:
<!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"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<h:head></h:head>
<body>
<rich:panel>
<f:facet name="header">
Write your own custom rich components with built-in AJAX support
</f:facet>
<h:outputText value="Panel Body" />
</rich:panel>
<rich:panel>
<f:facet name="header">
Write your own custom rich components with built-in AJAX support
</f:facet>
<h:outputText value="Panel Body" />
<a4j:form>
<h:outputText value="The integer version of the selected color:" />
<h:outputText id="RGBvalue" value="#{colorPickerBean.color}" />
<rich:panel header="RichFaces Color Picker" style="width: 315px">
<rich:colorPicker value="#{colorPickerBean.color}" colorMode="rgb"
converter="org.richfaces.IntegerColor">
<a4j:support event="onchange" reRender="RGBvalue" />
</rich:colorPicker>
</rich:panel>
</a4j:form>
</rich:panel>
</body>
</html>
Both xmlns in head tag are highlighted with "NLS missing message: CANNOT_FIND_FACELET_TAGLIB in: org.eclipse.jst.jsf.core.validation.internal.facelet.messages"
I've deployed my new xhtml page for JBoss and now rich components aren't handled proper. Next listing shows source of deployed page.
<!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:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j"><head></head>
<body>
<rich:panel>Panel Body
</rich:panel>
<rich:panel>Panel Body
<a4j:form>The integer version of the selected color:<span id="RGBvalue"></span>
<rich:panel header="RichFaces Color Picker" style="width: 315px">
<rich:colorPicker colorMode="rgb" converter="org.richfaces.IntegerColor">
<a4j:support event="onchange" reRender="RGBvalue"></a4j:support>
</rich:colorPicker>
</rich:panel>
</a4j:form>
</rich:panel>
</body>
</html>
My jboss-deployment-structure.xml in WebContent/META-INF:
<jboss-deployment-structure>
<sub-deployment name="Tutorial2.war">
<dependencies>
<module name="org.richfaces" slot="main">
<imports>
<include path="**" />
</imports>
</module>
</dependencies>
</sub-deployment>
</jboss-deployment-structure>
Modules defines as showed in link https://issues.jboss.org/browse/RF-12008
After few more changes I got
00:29:52,455 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.unit."Tutorial2.war".STRUCTURE: org.jboss.msc.service.StartException in service jboss.deployment.unit."Tutorial2.war".STRUCTURE: Failed to process phase STRUCTURE of deployment "Tutorial2.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [rt.jar:1.6.0_31]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.6.0_31]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_31]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: Sub deployment Tutorial2.war in jboss-structure.xml was not found. Available sub deployments:
at org.jboss.as.server.deployment.module.descriptor.DeploymentStructureDescriptorParser.subDeploymentNotFound(DeploymentStructureDescriptorParser.java:233) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.server.deployment.module.descriptor.DeploymentStructureDescriptorParser.deploy(DeploymentStructureDescriptorParser.java:159) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 5 more
Error occurs as soon as I add jboss-deployment-structure.xml to WEB-INF.
This looks like it's probably an issue with eclipse. It seems there are a few different questions along the same lines with eclipse and JSF. Most of them seem to say something this one does.
see following discussion on jboss forum
https://community.jboss.org/message/633025#633025
and search for the correnct answer
you should supply jboss7 specific deployment descriptor jboss_deployment_structure.xml to make richfaces module available to your application
I’m a beginning Java EE programmer having troubles setting up my first “JSF 2.0” enabled application. I’m using the following technologies:
jdk1.6.0_24
MyEclipse 10.0
Glassfish 3.0.1
JSF 2.0
Problem: I couldn’t find a way to make my server parse and render JSF 2.0 pages. I followed various guides, (notably from stackoverflow.com) without success. My test pages are not rendered by Glassfish 3.0.1. I tried different approaches to fix my code including:
1 -> web.xml
1.1 -> edited header specifying JFS 2.0 HTML taglib attributes ( ..)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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-app_3_0.xsd">
1.2 – Defined JSF servlet and other stuff
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<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>/register.xhtml</url-pattern>
</servlet-mapping>
2 -> Verified many times to check if the request URL used matches the url-pattern of the FacesServlet.
**Target page** (url was not typed in browser . . . ): register.xhtml
**URL Pattern:**
<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>/register.xhtml</url-pattern>
</servlet-mapping>
3 -> home page
3.1.1 -> included header specifying JFS 2.0 HTML taglib attributes ( ..)
<!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">
4 – libraries & dependencies
Started my project with Maven 2.0 support . This is my pom.xml file:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>JSF2.0_Template_1</groupId>
<artifactId>JSF2.0_Template_1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name></name>
<description></description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.el</groupId>
<artifactId>el-ri</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>bean-validator</artifactId>
<version>3.0-JBoss-4.0.2</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.annotation</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.ejb</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.enterprise.deploy</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.jms</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.management.j2ee</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.resource</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.security.auth.message</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.security.jacc</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet.jsp</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.transaction</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api-osgi</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api-osgi</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-osgi-bundle</artifactId>
<version>1.0.1-SP3</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
5 – Glassfish results
5.1 - HTML JSF 2.0 Code:
<!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>A Simple JavaServer Faces Registration Application</title>
</h:head>
<h:body>
<h:form>
<h2>JSF Registration App</h2>
<h4>Registration Form</h4>
<table>
<tr>
<td>First Name:</td>
<td>
<h:inputText label="First Name"
id="fname" value="#{userBean.firstName}"
required="true"/>
<h:message for="fname" />
</td>
</tr>
<tr>
<td>Last Name:</td>
<td>
<h:inputText label="Last Name"
id="lname" value="#{userBean.lastName}"
required="true"/>
<h:message for="lname" />
</td>
</tr>
<tr>
<td>Sex:</td>
<td>
<h:selectOneRadio label="Sex"
id="sex" value="#{userBean.sex}" required="true">
<f:selectItem itemLabel="Male" itemValue="male" />
<f:selectItem itemLabel="Female" itemValue="female" />
</h:selectOneRadio>
<h:message for="sex" />
</td>
</tr>
<tr>
<td>Date of Birth:</td>
<td>
<h:inputText label="Date of Birth"
id="dob" value="#{userBean.dob}" required="true">
<f:convertDateTime pattern="MM-dd-yy" />
</h:inputText> (mm-dd-yy)
<h:message for="dob" />
</td>
</tr>
<tr>
<td>Email Address:</td>
<td>
<h:inputText label="Email Address"
id="email" value="#{userBean.email}" required="true"
validator="#{userBean.validateEmail}"/>
<h:message for="email" />
</td>
</tr>
<tr>
<td>Service Level:</td>
<td>
<h:selectOneMenu label="Service Level"
value="#{userBean.serviceLevel}">
<f:selectItem itemLabel="Medium" itemValue="medium" />
<f:selectItem itemLabel="Basic" itemValue="basic" />
<f:selectItem itemLabel="Premium" itemValue="premium" />
</h:selectOneMenu>
</td>
</tr>
</table>
<p><h:commandButton value="Register" action="confirm" /></p>
</h:form>
</h:body>
</html>
5.2 - HTML of page displayed by browser:
<!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"><head>
<title>A Simple JavaServer Faces Registration Application</title></head><body>
<form id="j_idt6" name="j_idt6" method="post" action="/JSF2.0_Template/faces/register.xhtml;jsessionid=db8f214e61a90013726b072f83eb" enctype="application/x-www-form- urlencoded">
<input type="hidden" name="j_idt6" value="j_idt6" />
<h2>JSF Registration App</h2>
<h4>Registration Form</h4>
<table>
<tr>
<td>First Name:</td>
<td><input id="j_idt6:fname" type="text" name="j_idt6:fname" />
</td>
</tr>
<tr>
<td>Last Name:</td>
<td><input id="j_idt6:lname" type="text" name="j_idt6:lname" />
</td>
</tr>
<tr>
<td>Sex:</td>
<td><table id="j_idt6:sex">
<tr>
<td>
<input type="radio" name="j_idt6:sex" id="j_idt6:sex:0" value="male" /><label for="j_idt6:sex:0"> Male</label></td>
<td>
<input type="radio" name="j_idt6:sex" id="j_idt6:sex:1" value="female" /><label for="j_idt6:sex:1"> Female</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Date of Birth:</td>
<td><input id="j_idt6:dob" type="text" name="j_idt6:dob" /> (mm-dd-yy)
</td>
</tr>
<tr>
<td>Email Address:</td>
<td><input id="j_idt6:email" type="text" name="j_idt6:email" />
</td>
</tr>
<tr>
<td>Service Level:</td>
<td><select name="j_idt6:j_idt21" size="1"> <option value="medium" selected="selected">Medium</option>
<option value="basic">Basic</option>
<option value="premium">Premium</option>
</select>
</td>
</tr>
</table>
<p><input type="submit" name="j_idt6:j_idt26" value="Register" /></p><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-3247001945221977595:-4814431455900353505" autocomplete="off" />
</form></body>
</html>
I could not upload a PRINTSCREEN of what is showed by browser, but tags are not rendered.
Question: what was my mistake? What should be done to make Glassfish application server render JSF 2.0 enabled pages correctly? I just need a simple JSF 2.0 template to setup my development environment and use as start point of JSF applications.
Thanks!
In contrary to what you're telling, the JSF page is correctly rendered. As per the obtained HTTP response, the generated HTML output looks all fine. All JSF tags are correctly parsed and rendered. If JSF did not render anything, then you would have seen exactly the original JSF source code in View Source.
Your concrete problem is that the browser is not displaying the generated HTML properly. This can happen when the Content-Type header is wrong. The Content-Type header tells the browser how to interpret the content. The behaviour is also browser dependent. If you for example serve a <DOCTYPE html ...> with a Content-Type of application/xhtml+xml to the MSIE browser, then it will go havoc and even pop a confusing Save As dialogue.
In your case, even though you didn't state the problem clearly, nor described the real response in detail, nor has shown a screenshot (even though on a different host), I think that your concrete problem is that all that HTML is displayed with a Content-Type of text/plain. I.e. you're literally seeing the entire HTML source code as browser response and you misinterpreted it as "JSF not rendering the response" while it's actually your browser who didn't render the retrieved JSF-generated HTML source into a visual representation.
The right Content-Type is by default set by the JSF implementation itself, but it can be overridden by the server or even a proxy (like Apache HTTPD) in the front, or by explicitly specifying it in the JSF source code. I'm not sure about the exact cause in your particular case, but the following should force JSF to send the response explicitly as text/html.
<f:view contentType="text/html">
Put at least h:body here.
</f:view>
You can examine the response headers in any modern web browser debugging tool. For example, in Firebug:
Unrelated to the concrete problem, your FacesServlet mapping should be more generic than alone this page, or you may run into trouble when serving resources like Ajax javascripts. I recommend *.xhtml. I also recommend to redo the configuration based on a more decent tutorial. You can find good tutorials in the bottom of our JSF wiki page.