If you are using the file download control, you sooner or later want to allow your users to delete an existing file. But if you have some required fields on your XPage, a deletion is not possible because the validation is always fired before the attachment is removed.
To disable to validation you can use this little SSJS snippet which sets the „disableValidators“ property for all events of the UIFileDownload control. Just add the following code to the beforeRenderResponse event of your XPage and change the id of the component to fit your requirements.
<xp:this.beforeRenderResponse> <![CDATA[#{javascript: /*** * disable validation for UIFileDownload control * * @param UIFileDownload component * @author Sven Hasselbach * @category SSJS * @category UI * @version 0.2 */ function disableFileDownloadValidation( fDownload:com.ibm.xsp.component.UIFileDownload ){ if( fDownload === null ) return; rekDisableFileDownloadValidation( fDownload ); } function rekDisableFileDownloadValidation( component:javax.faces.component.UIOutput ){ try{ var children:java.util.List = component.getChildren(); var it:java.util.Iterator = children.iterator(); var curChild:javax.faces.component.UIOutput; while( it.hasNext() ){ curChild = it.next(); if( typeof( curChild ) === 'com.ibm.xsp.component.xp.XspEventHandler' ) curChild.setDisableValidators( true ); rekDisableFileDownloadValidation( curChild ); } }catch(e){} } disableFileDownloadValidation( getComponent( 'fileDownload1' ) ); }]]> </xp:this.beforeRenderResponse>
P.S. Keep in mind that this article has been posted in the “Quick-n-Dirty” category.
thank you! I was able to modify the above code for some attachment quirks I was experiencing. We’ve not yet migrated to 9, so this worked perfectly!