Recent Notes
Displaying notes 111 - 120
Created by Fang on November 12, 2011 21:03:03
Last update: November 12, 2011 21:03:03
Experts may disagree but I found it absolutely stunning that JSF EL does not provide an operator for string concatenation. The Java "+" operator is there for the take. Java, which is a strongly typed compiled language, overloads the "+" operator in such a way that any object can be concatenated with a string. But JSF EL, which definitely isn't as strongly typed as Java, restricts the "+" operator to numerical values only! Of course, experts may argue that the "+" operator overloading is a huge design flaw of the Java language. But even so, JSF EL is not the right place to fix it! In some cases, a concatenation operator isn't needed, for example:
<ui:repeat var="tab" value="#{tabs}"> <img ... But in case the concatenated...
Created by Fang on November 02, 2011 17:15:34
Last update: November 12, 2011 20:09:28
The HTML prettifier tidy can also be used to pretty print XML. Just use the -xml switch.
tidy -xml <xmlfile>
With indentation:
tidy -xml -i <xmlfile>
Increase indentation to 4 spaces from the default 2:
tidy -xml -i --indent-spaces 4 <xmlfile>
Created by Fang on November 11, 2011 19:43:46
Last update: November 11, 2011 19:43:46
Suppose slides is an array, you can display the first two elements by index like this:
Value by index:
<p><b>#{slides[0]}</b></p>
<...
The dot notation, which works for some template languages, does not work for facelets:
This does not work:
<p><b>#{slides.0}</b></p>
...
Created by Dr. Xi on November 11, 2011 13:59:46
Last update: November 11, 2011 13:59:46
This is an example to replace a Java string with case insensitive match.
Code:
public class ReplaceTest {
public static vo...
Output:
Done TEST tEst tESt Test
Test TEST tEst tESt Te...
Created by Dr. Xi on November 11, 2011 10:05:22
Last update: November 11, 2011 10:12:01
This is an HTML image tag filter using Java regex. It takes a string, finds the img tags, replaces the src attribute with one provided by the filter, then adds a class name to the class attribute.
import java.util.regex.*;
import java.io.*;
...
Test file:
<div id="HTML snippet">
<img src="img/big/txt-m...
Created by Fang on November 10, 2011 20:33:46
Last update: November 10, 2011 20:33:46
The stack trace is like this:
java.lang.IllegalArgumentException: Component prop...
You get this error because you are using the class attribute with a JSF UI component, for which the class attribute cannot be altered. Of course you meant CSS class, not Java class! You can use the styleClass attribute instead of the class attribute. The styleClass attribute becomes the class attribute when the component is rendered.
If you can add a tag handler to the UI component, you can alias class to styleClass , which will allow you to use the class attribute on the UI component:
import javax.faces.view.facelets.*;
pub...
Created by Fang on November 10, 2011 12:40:47
Last update: November 10, 2011 12:41:07
The expression language defines a set of implicit objects in JSF context:
Variable Description
facesContext The FacesContext instance for the current request.
param Maps a request parameter name to a single value.
paramValues Maps a request parameter name to an array of values.
header Maps a request header name to a single value.
headerValues Maps a request header name to an array of values.
cookie Maps a cookie name to a single cookie.
initParam Maps a context initialization parameter name to a single value.
requestScope Maps request-scoped variable names to their values.
sessionScope Maps session-scoped variable names to their values.
applicationScope Maps application-scoped variable names to their values.
The variable pageScope , which exists in JSP EL, does not exist in JSF EL.
Created by Fang on November 10, 2011 11:27:37
Last update: November 10, 2011 11:28:25
This has been tested working with Apache MyFaces 2.1.3 running Tomcat 7.
Managed bean code:
package com.example;
import javax.faces.bea...
Facelet page:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stric...
Created by Fang on November 10, 2011 09:26:12
Last update: November 10, 2011 09:26:12
Syntax highlighted XML schema for JSF 2.0 Application Configuration Resource File ( faces-config.xml ). Almost 3000 lines!
<?xml version="1.0" encoding="UTF-8"?>
<xsd:sch...
Created by Fang on November 03, 2011 19:47:38
Last update: November 08, 2011 20:24:47
This is a step-by-step example to create a really simple facelet taglib (in JSF 2 with Maven). Create a simple Maven project with:
mvn archetype:create -DgroupId=com.example -Dartif... Three files are created as a result: pom.xml src/main/java/com/example/App.java src/test/java/com/example/AppTest.java This project should be able to build with: mvn package Add facelet API dependencies to pom.xml : <project xmlns="http://maven.apache.org/POM/4.... The compiler plugin section is optional. Remove src/main/java/com/example/App.java , create a new Java class as the facelet Tag Handler ( HelloTagHandler.java ): package com.example; import java.io.IOExcep... This tag handler simply prints a "Hello" message. Create facelet tag declaration file src/main/resources/META-INF/hello.taglib.xml : <?xml version="1.0" encoding="UTF-8"?> <facelet... Build the JAR with mvn clean package Optionally, install it to the local repository: mvn install To use the taglib, simply drop the...