ファイル ダウンロード コントロールで添付ファイルの削除を許可しています。ユーザーが添付ファイルを削除し、(保存せずに) ページから離れた場合、添付ファイルは実際には削除されません。
コントロールの onclick イベントがありますが、削除に固有のものではありません。添付ファイルの削除後に .save() を自動的に呼び出す方法はありますか?
ファイル ダウンロード コントロールで添付ファイルの削除を許可しています。ユーザーが添付ファイルを削除し、(保存せずに) ページから離れた場合、添付ファイルは実際には削除されません。
コントロールの onclick イベントがありますが、削除に固有のものではありません。添付ファイルの削除後に .save() を自動的に呼び出す方法はありますか?
これは、 FileDownloadコントロールの削除機能にアクションを追加できるSSJSスニペットです。
<xp:this.beforeRenderResponse>
<![CDATA[#{javascript:
/***
* adds an additional method to "delete action"
* of a UIFileDownload control
*
* @param UIFileDownload component
* @author Sven Hasselbach
* @category SSJS
* @category UI
* @version 0.3
*/
function overrideFileDownloadAction( fDownload ){
if( fDownload === null )
return;
rekOverrideFileDownloadAction( fDownload, fDownload );
}
function rekOverrideFileDownloadAction( component:javax.faces.component.UIOutput, fDownload:com.ibm.xsp.component.UIFileDownload ){
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' ){
var group = new com.ibm.xsp.actions.ActionGroup();
var list = new java.util.ArrayList();
group.setComponent( fDownload );
list.add( curChild.getAction() );
list.add( mBinding );
group.setActions( list );
curChild.setAction(group);
}
rekOverrideFileDownloadAction( curChild , fDownload );
}
}catch(e){}
}
var mBinding = facesContext.getApplication().createMethodBinding("#{javascript:document1.save()}", null );
overrideFileDownloadAction( getComponent( 'fileDownload1' ) );
}]]>
</xp:this.beforeRenderResponse>
MethodBindingmBindingのコードとFileDownLoadコントロールの名前を変更する必要があります。このコードは、検証の問題がない場合にのみドキュメントを保存することに注意してください。必須フィールドを無効にするには、次のコード行を追加する必要がありますcurChild.setDisableValidators(true); ifブロックで。
別の方法として、enableModifiedFlag プロパティを使用して、ユーザーが保存せずにページを離れた場合にプロンプトが表示されるようにすることもできます。