Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to insert special characters like & and < into JSF components' value attribute?

How to insert special characters like & and < into JSF components value attribute ?

For example: I want something like this:

<h:outputText value="Tom & Jerry Show" /> 

When I try this, I get the following exception:

javax.faces.view.facelets.FaceletException: Error Parsing /foo.xhtml: Error Traced[line: 15] The entity name must immediately follow the '&' in the entity reference.

And in case of <, I get the following exception:

javax.faces.view.facelets.FaceletException: Error Parsing /foo.xhtml: Error Traced[line: 15] The value of attribute "value" associated with an element type "h:outputText" must not contain the '<' character.

like image 684
Rajat Gupta Avatar asked Jul 30 '11 14:07

Rajat Gupta


People also ask

How do I get special characters on my keyboard?

Inserting ASCII characters To insert an ASCII character, press and hold down ALT while typing the character code. For example, to insert the degree (º) symbol, press and hold down ALT while typing 0176 on the numeric keypad. You must use the numeric keypad to type the numbers, and not the keyboard.


1 Answers

You need to escape them to XML entities.

<h:outputText value="Tom &amp; Jerry Show" /> 

This problem is not related to JSF per se, but to the view technology. You're apparently using Facelets (which is perfectly fine!). Facelets is however a XML based view technology, so you would need to ensure that the template is well formed XML and that all special characters which are to be represented as-is, are been escaped like above.

In the wikipedia you can find a list of predefinied character entities which needs to be escaped in the XML whenever you'd like to display them as-is. It are the following character entities:

"     &quot; &     &amp; '     &apos; <     &lt; >     &gt; 

See also:

  • The entity name must immediately follow the '&' in the entity reference
like image 64
BalusC Avatar answered Sep 18 '22 15:09

BalusC