Showing posts with label xforms. Show all posts
Showing posts with label xforms. Show all posts

Thursday, 28 June 2012

Generate a year list in an xform dropdown listbox

To generate a list of years in descending order from current year back to 1950:

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
......

<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate var="year" value="${now}" pattern="yyyy" />

<xforms:select1 ref=".">                                              
  <c:forEach var="i" begin="1950" end="${year}" step="1" varStatus="loop">
  <xforms:item>
       <xforms:label><c:out value="${loop.end - i + loop.begin}" /></xforms:label>
       <xforms:value><c:out value="${loop.end - i + loop.begin}" /></xforms:value>
    </xforms:item>   
  </c:forEach>
</xforms:select1>


Wednesday, 27 June 2012

Strip out commas and full stops from an input box in xform

To normalize data entered by user, e.g. strip out commas and full stops from an input box in xform, no matter how many commas / full stops are added in the end:

<xforms:input ref="xx">
      <xforms:label>label</xforms:label>
          <xforms:action ev:event="xforms-value-changed">
                  <xforms:setvalue ref=".[substring(.,string-length(.))='.']"
                                               value="substring(.,1,string-length(.)-1)"/>
                  <xforms:setvalue ref=".[substring(.,string-length(.))=',']"
                                               value="substring(.,1,string-length(.)-1)"/>
          </xforms:action>
</xforms:input>

NB: if you want to replace the value by a fixed string, it must be in a pair of single quotes, e.g.
<xforms:setvalue ref=".[substring(.,string-length(.))=',']"
                             value="'NEW TEXT'"/>