Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: manderson am 22.10.12 - 15:14:00

Titel: File-Downloader & Validation Problem beim löschen
Beitrag von: manderson am 22.10.12 - 15:14:00
hallo,

ich habe ein einfach Formular gebaut indem ein File-Upload field und ein File-Download field vorhanden ist, sowie weitere einfache input Felder die Plichtfelder sind. Ich möchte es den User erlauben seine hoch geladenen Anhänge vordem versenden zu löschen, falls man aus versehen was falsches hoch geladen hat.

Leider geht das scheinbar nicht, ein klick auf das kleine Icon löst jedes mal die Validation aus und die Datei wird nicht gelöscht. Ich habe die Validation für den File-Downloader schon ausgeschaltet ausgeschaltet (disableValidators="true") jedoch kein Erfolg.

Übersehe ich was wichtiges?  ???
Titel: Re: File-Downloader & Validation Problem beim löschen
Beitrag von: Sven Hasselbach am 23.10.12 - 10:27:47
Nein, da ist wohl was "vergessen" worden bei der Implementierung des Controls... :-X

Ein Workaround ist ein kleines SSJS Snippet, das im beforeRenderResponse einfach die Validierung der Events des UIFileDownloadControls deaktviert.

Code
<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>


Einfach die Komponente anpassen, die im Funktionsaufruf hinterlegt ist (-> 'fileDownload1' )