Autor Thema: File-Downloader & Validation Problem beim löschen  (Gelesen 2423 mal)

Offline manderson

  • Junior Mitglied
  • **
  • Beiträge: 68
    • manderson.de
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?  ???

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: File-Downloader & Validation Problem beim löschen
« Antwort #1 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' )

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz