Submitted by martin jinoch on
Recently friend of mine asked me for help with an XPages application and one of the "problems" we had was validating user inputs.
We needed to make sure that user enters something in one of the two fields. My first thought was "ok, it's going to be a simple xp:validateExpression checking for non empty string and returning true". But after giving it one more thought, I ended up with "just make one of the fields required, if the other one is empty"
In code it could look like this:
<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:table> <xp:tr> <xp:td> <xp:label value="inputText1:" id="label1"> </xp:label> </xp:td> <xp:td> <xp:inputText id="inputText1"> </xp:inputText> </xp:td> <xp:td> <xp:message id="message1" for="inputText1"> </xp:message> </xp:td> </xp:tr> <xp:tr> <xp:td> <xp:label value="inputText2:" id="label2"> </xp:label> </xp:td> <xp:td> <xp:inputText id="inputText2"> <xp:this.required><![CDATA[#{javascript:if (getComponent("inputText1").getValue()=='') { return true; }}]]></xp:this.required> <xp:this.validators> <xp:validateRequired message="Enter text in one of the fields, please."></xp:validateRequired> </xp:this.validators></xp:inputText> </xp:td> <xp:td> <xp:message id="message2" for="inputText2"> </xp:message> </xp:td> </xp:tr> <xp:tr> <xp:td colspan="3"> <xp:button value="Submit" id="button1"> <xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" id="eventHandler1"> </xp:eventHandler> </xp:button> </xp:td> </xp:tr> </xp:table> </xp:view>
Recent comments