Java Server Faces project stage
http://www.java-tutorial.ch/java-server-faces/jsf-project-stage
JSF 
2.0 has introduced a new feature called
project stage. Project stage is a new configuration option that allows the application developer/deployer to specify a hint to the
JSF 
implementation regarding the role of the current deployment. Valid values include:
- Development
- Production
- SystemTest
- UnitTest
This hint allows the
JSF 
implementation to optimize its behavior for the current stage. For example, the
JSF 
implementation might provide more verbose development-time diagnostics than would be practical for a production environment.
Doing this enables better error messages, including in the client side JavaScript, at the cost of some performance.
To enabled Project Stage in your web application put the following snippet in your web.xml file.
1.
<
context-param
>
2.
<
param-name
>javax.faces.PROJECT_STAGE</
param-name
>
3.
<
param-value
>Development</
param-value
>
4.
</
context-param
>
Access project stage using expression language
1.
#{facesContext.application.projectStage}
2.
#{initParam['javax.faces.PROJECT_STAGE']}
Project stage enum source
JSF 
source of ProjectStage enumeration in
JSF 
2.0
01.
public
enum
ProjectStage
02.
{
03.
Development,
04.
Production,
05.
SystemTest,
06.
UnitTest;
07.
08.
public
static
final
String PROJECT_STAGE_JNDI_NAME =
"java:comp/env/jsf/ProjectStage"
;
09.
public
static
final
String PROJECT_STAGE_PARAM_NAME =
"javax.faces.PROJECT_STAGE"
;
10.
}
Writing conditional code with javax.faces.PROJECT_STAGE configuration
Getting the project stage from the FacesContext application object instance.
1.
FacesContext facesContext = FacesContext.getCurrentInstance();
2.
Application application = facesContext.getApplication();
3.
if
(application.getProjectStage() == ProjectStage.Development) {
4.
5.
}
Interrogating directly the FacesContext using the project stage enumeration
1.
FacesContext facesContext = FacesContext.getCurrentInstance();
2.
if
(facesContext.isProjectStage(ProjectStage.Development)) {
3.
4.
}
Troubleshooting project stage issues

Impossible to change project stage away from development

Migrate to
JSF 
2.1.2 The bug JAVASERVERFACES-2079 has been fixed in
JSF 
2.1.2
If you have any remark or questions feel free to put a comment.If you enjoyed this tutorial and want to promote it don't hesitate to click on
Tags: project, current, development, access, application, implementation, expression, stage,enumeration, facescontext
Comments