The xp:text – element can easily manipulated to add HTML5 functionality to a XPages. By overriding the property tagName, the component can be accessed like every other UI component in the component tree.
Normally the designer only allows a small list of choices for the tagName property:
But this can be easily overwritten by manually editing the tagName attribute in the source and allows to change the generated HTML element to whatever you want.
Here is a small example for a HTML5 progessbar which can be accessed like every other UIComponent:
<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:text escape="false" id="pBar" disableTheme="true" tagName="progress" value=""> <xp:this.attrs> <xp:attr name="value"> <xp:this.value><![CDATA[#{javascript: if( !sessionScope.containsKey("pBar") ) sessionScope.put("pBar", 0 ); var value = sessionScope.get("pBar"); if( value > 100 ) value = 0; sessionScope.put("pBar", (value+10) ); value }]]></xp:this.value> </xp:attr> <xp:attr value="100" name="max"></xp:attr> </xp:this.attrs> </xp:text> <xp:button value="Label" id="button1"> <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="pBar"> </xp:eventHandler> </xp:button> </xp:view>
The generated HTML Tag looks like this and can for example be refreshed with a partial refresh etc.
<progress id="view:_id1:pBar" value="40" max="100"></progress>
The list of tags presented by Domino Designer is just a suggestion for the most common tags. The tag name itself can be edited directly in the All Properties table. So there is no need to compute it, which will consume more runtime resources.
You are right. I have changed my sample above.
Thanks for the hint.