Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

The prototypes here were used for getting the feedback of other developers, during the first part (design part) of GSOC project. They are all obsolete now, and only kept as a reference example for future students .

<hx:inputText>

This component is an HTML5 enabled extension of standard <h:inputText> and Trinidad's <tr:inputText>.

This component is able to render plain-text (types of text, search, url and tel), textarea and password inputs, just like <tr:inputText>. Plus new Html5 stuff is supported.

Extends: h:inputText or some middle-component that other input components extend
Attributes not present in ancestor:

Name

Required?

Values

Description

text

optional

one of
'text'(default), 'search', 'url', 'tel', 'textarea' and 'password'

Type of the input.
Same rules apply for 'text', 'search', 'url' and 'tel' on browsers, except the new browser-side validation. see this.

required

optional

true or false(default).

Same with <h:inputText> 'required' except, 'required' attribute of HTML 'input' element is also used this time.

pattern

optional

EL and literal

Pattern to validate the typed input on browser-side and the server-side. This attribute should not be set and is ignored if "type" is 'textarea'.

suggestions

optional

Comma seperated strings, array or collection of SelectItem's

Suggestion values. This attribute should not be defined if "datalist" property is set. This property should not be set and is ignored if "type" is 'password' or 'textarea'.

autofocus

optional

boolean

If true, as soon as the page is loaded, allows the user to just start typing without having to manually focus the main control. Defaults to false.

placeholder

optional

EL and literal

Hint to show on the input, when nothing is typed

datalist

optional

EL and literal

Id of <hx:datalist> for suggestions mechanism. By this way, suggestion options(datalist) can be shared across several input elements. This attribute should not be set and is ignored if "type" is 'textarea' or 'password'.

cols

optional

int

Number of columns to set width of input element.

rows

optional

int

Number of rows to set height of input element. This attribute should not be set and is ignored if "type" is not 'textarea'. If "type" is not set, and "rows" is set to a number that is greater than 1, type will be set to 'textarea' and a textarea element will be rendered.

Potential Children:
  • <f:selectItem> and <f:selectItems> : For suggestions (not applicable for 'textarea' and 'password' types)
  • Potential children <h:inputText> (including behaviors, validators...)
References:

<hx:datalist>

Extends: UIComponent
Attributes:

Name

Required?

Values

Description

items

optional

Comma seperated strings, array or collection of SelectItem's

Suggestion values.

Potential Children:
  • <f:selectItem> and <f:selectItems> and their extensions.
Notes:
  • "datalist" element definition from HTML5 spec: The datalist element represents a set of option elements that represent predefined options for other controls.
References:

Usage of prototypes:

Code Block
langxml
titlesimple usage
<hx:inputText value="#{someBean.someField}" type="text"/>
Code Block
langxml
titleexpected HTML5 code
<input type="text" value="DefaultInput" />



Code Block
langxml
titleusing search type and required attribute
<hx:inputText value="#{someBean.someField}" type="search" required="true"/>
Code Block
langxml
titleexpected HTML5 code
<input type="search" value="DefaultInput" required="true"/>



Code Block
langxml
titleusing pattern attribute
<hx:inputText value="#{someBean.someField}" type="text" pattern="[0-9][A-Z]{3}" title="A part number is a digit followed by three uppercase letters."/>
Code Block
langxml
titleexpected HTML5 code
	<input type="text" value="DefaultInput" pattern="[0-9][A-Z]{3}" title="A part number is a digit followed by three uppercase letters."/>
	<!-- Not typing the input can result a browser alert:
	     A part number is a digit followed by three uppercase letters.
	     You cannot complete this form until the field is correct.
	-->



Code Block
langxml
titleusing suggestions attribute with static text
<hx:inputText type="text" value="#{someBean.tool}" suggestions="Hammer,Screwdriver"/>
Code Block
langxml
titleexpected HTML5 code
<input type="text" value="" list="idOfDataList"/>
<datalist id="idOfDataList">
	<option value="Hammer" label="Hammer" />
	<option value="Screwdriver" label="Screwdriver" />
</datalist>



Code Block
langxml
titleusing suggestions attribute
<hx:inputText type="search" value="#{someBean.city}" suggestions="#{someBean.citySuggestions}"/>
Code Block
langxml
titleexpected HTML5 code
<input type="search" value="1" list="idOfDataList"/>
<datalist id="idOfDataList">
	<option value="0" label="Istanbul" />
	<option value="1" label="New York" />
	<option value="2" label="Berlin" />
</datalist>



Code Block
langxml
titleusing <f:selectItem> and <f:selectItems> suggestions
<hx:inputText type="search" value="#{someBean.city}">
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItems ......./>
	<s:selectItems ......./>		<!-- see: http://jsf-comp.sourceforge.net/components/easysi/index.html -->
</hx:inputText>
Code Block
langxml
titleexpected HTML5 code
<input type="search" value="1" list="idOfGeneratedDataList"/>
<datalist id="idOfGeneratedDataList">
	<option value="0" label="Istanbul" />
	<option value="1" label="New York" />
	<option value="2" label="Berlin" />
	<option .../>
	<option .../>
</datalist>



Code Block
langxml
titlemixing 'suggestions' attribute and <f:selectItem> and <f:selectItems> suggestions
<hx:inputText type="search" value="#{someBean.city}" suggestions="#{someBean.citySuggestions}">
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItems ......./>
</hx:inputText>
Code Block
langxml
titleexpected HTML5 code
<input type="search" value="1" list="idOfGeneratedDataList"/>
<datalist id="idOfGeneratedDataList">
	<option value="0" label="SuggestionAttributeSuggestion1" />
	<option value="1" label="SuggestionAttributeSuggestion2" />
	<option value="2" label="F_SelectItemSuggestion1" />
	<option .../>
	<option .../>
</datalist>



Code Block
langxml
titleusing <hx:datalist> for suggestions
<!--  this example demonstrates shared suggestion list for two input fields. -->
<hx:inputText id="sourceCityInput" type="text" value="#{transportation.sourceCity}" datalist="sharedSuggestionDatalist"/>
<hx:inputText id="destCityInput"   type="text" value="#{transportation.destCity}"   datalist="sharedSuggestionDatalist"/>

<hx:datalist id="sharedSuggestionDatalist" items="#{someBean.citySuggestions}">
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItems ......./>
</hx:datalist>
Code Block
langxml
titleexpected HTML5 code
<input id="sourceCityInput" type="text" value="0" list="sharedSuggestionDatalist"/>
<input id="destCityInput"   type="text" value="0" list="sharedSuggestionDatalist"/>
<datalist id="sharedSuggestionDatalist">
	<option value="0" label="SuggestionAttributeSuggestion1" />
	<option value="1" label="SuggestionAttributeSuggestion2" />
	<option value="2" label="F_SelectItemSuggestion1" />
	<option .../>
	<option .../>
</datalist>



Code Block
langxml
titleusing Ajax suggestions with standard <f:ajax>
<hx:inputText id="sourceCityInput" type="text" value="#{transportation.sourceCity}" datalist="sharedSuggestionDatalist">
	<f:ajax event="keypress" execute="@this" render="suggestionDatalist"/>
</hx:inputText>
<hx:datalist id="suggestionDatalist" items="#{someBean.citySuggestions}"> <!-- Ajax-Dynamic part will be  #{someBean.citySuggestions} -->
	<f:selectItem ..../>		<!-- These will be sent on response to ajax request anyway. -->
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItems ......./>
</hx:datalist>
Code Block
langxml
titleexpected HTML5 code
<input type="search" value="1" list="idOfGeneratedDataList" onkeypress="jsf.ajax.request(....)"/>
<datalist id="suggestionDatalist">
	<option value="0" label="SuggestionAttributeSuggestion1" />
	<option value="1" label="SuggestionAttributeSuggestion2" />
	<option value="2" label="F_SelectItemSuggestion1" />
	<option .../>
	<option .../>
</datalist>



Code Block
langxml
titleusing placeholder attribute
<hx:inputText type="search" value="#{someBean.city}" placeHolder="Type a city name"/>
Code Block
langxml
titleexpected HTML5 code
<input type="search" value="1" placeholder="Type a city name"/>
<!-- browser is expected to show 'Type a city name' when the input is empty. -->



Code Block
langxml
titlemore complex usage
<hx:inputText type="text" value="#{someBean.city}" suggestions="#{someBean.citySuggestions}"
	placeHolder="#{messages['typeCity']}" autofocus="true" pattern="#{someBean.CityNamePattern}" required="true">
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItem ..../>
	<f:selectItems ......./>
</hx:inputText>
Code Block
langxml
titleexpected HTML5 code
<input type="text" value="DefaultValue" list="idOfGeneratedDataList"
	  placeholder="Type a city name" autofocus pattern="[A-Za-z ]{3}" required />
<datalist id="idOfGeneratedDataList">
	<option value="0" label="Istanbul" />
	<option value="1" label="New York" />
	<option value="2" label="Berlin" />
	<option .../>
	<option .../>
</datalist>



Code Block
langxml
titleusage: textarea
<hx:inputText type="textarea" value="#{someBean.description}"
	placeHolder="#{messages['typeDescription']}" autofocus="true" required="true" rows="3" cols="30" />
Code Block
langxml
titleexpected HTML5 code
<textarea placeholder="Type the description" autofocus="true" required="true" rows="3" cols="30" >
	DefaultValue
</textarea>



Code Block
langxml
titleusage: textarea determined by no type attr, but rows attr
<hx:inputText value="#{someBean.description}" rows="3" />
Code Block
langxml
titleexpected HTML5 code
<textarea rows="3">
</textarea>



Code Block
langxml
titleusage: password type
<hx:inputText type="password" value="#{someBean.password}" pattern="#{someBean.6DigitsAndOneUpperCaseAtTheEnd}" required="true" />
Code Block
langxml
titleexpected HTML5 code
<input type="password" value="DefaultValue" pattern="[0-9]{6}[A-Za-z]" required="true" />



Code Block
langxml
titleusage: <hx:datalist>
<hx:datalist items="#{someBean.suggestions}" />	<!-- someBean.suggestions is a List<SelectItem> -->
Code Block
langxml
titleexpected HTML5 code
<datalist id="idOfDataList">
	<option value="Istanbul" label="Istanbul-Turkey" />
	<option value="Berlin" label="Berlin-Germany" />
	<option value="NY" label="New York-USA" />
</datalist>



Code Block
langxml
titleusage: <hx:datalist> with static suggestions
<hx:datalist items="Hammer, Screwdriver" />
Code Block
langxml
titleexpected HTML5 code
<datalist id="idOfDataList">
	<option value="Hammer" label="Hammer" />
	<option value="Screwdriver" label="Screwdriver" />
</datalist>



Code Block
langxml
title<hx:datalist> with different suggestion cases
<hx:datalist items="#{someBean.suggestions}" >	<!-- someBean.suggestions is a List<SelectItem> -->
	<f:selectItem .../>
	<f:selectItems .../>
	<s:selectItems value="#{EasysiDemo.players}" var="Player" itemLabel="#{Player.name}" itemValue="#{Player.no}"/>
</hx:datalist>
<!-- see http://jsf-comp.sourceforge.net/components/easysi/index.html for <s:selectItems> -->
Code Block
langxml
titleexpected HTML5 code
<datalist id="idOfDataList">
	<option ... />
	<option ... />
	<option ... />
	<option ... />
</datalist>