2012-04-29 3 views
4

ダイナミックビューパネルを使用して、XPageの中にさまざまなビューを表示しています。これにより、いくつかの問題が生じました。まず、ビュー内に設定された列のスタイル設定はXPageに表示されません(例:列見出しを太字にするなど)。さらに重要なのは、ビューにはビュー内のドキュメントへのリンクが含まれていますが、リンクにはすべてaction=editDocumentが追加されています。action=openDocumentに変更したいと思います。しかし、私はこのプロパティを変更する方法を見つけることができません。動的ビューパネルの使用

答えて

8

このためにカスタマイザBeanを使用し、そのBeanの名前をDynamic View PanelコントロールのcustomizerBeanプロパティに追加する必要があります。

カスタマイザBeanでは、探しているものなどのスタイリングを制御できますが、自分でJava Beanをコーディングする必要があります。 Jesse Gallagherは拡張カスタムビーンBeanの素晴らしい例を作成し、それをGithubに入れます:https://github.com/jesse-gallagher/Domino-One-Offs

は、件名に自分のブログの記事を見てください:

- あなたが使用できるのopenDocumentにeditDocumentを変更するときに個人の特定の問題については

カスタマイズビーンの次の小さな例:

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 
import com.ibm.xsp.extlib.builder.ControlBuilder.IControl; 
import com.ibm.xsp.extlib.component.dynamicview.DominoDynamicColumnBuilder.DominoViewCustomizer; 
import com.ibm.xsp.extlib.component.dynamicview.UIDynamicViewPanel.DynamicColumn; 
import com.ibm.xsp.extlib.component.dynamicview.ViewDesign.ColumnDef; 

public class customizer extends DominoViewCustomizer{ 
    @Override 
    public void afterCreateColumn(FacesContext context, int index, ColumnDef colDef, IControl column) { 
    //Create a variable for the current component 
    UIComponent columnComponent = column.getComponent(); 
    //Create a reference to the column and set the links to open in read mode 
    DynamicColumn dynamicColumn = (DynamicColumn) columnComponent; 
    dynamicColumn.setOpenDocAsReadonly(true); 
    super.afterCreateColumn(context, index, colDef, column); 
    } 
} 

クラスをfaces-config.xmlに追加して、Beanとして使用できるようにすることを忘れないでください。

カスタマイザBeanではなく、onColumnClickイベントを使用して独自のリダイレクトを行うことができます。 。

context.redirectToPage(@ReplaceSubstring(context.getUrl()のtoString()、」:

<xe:dynamicViewPanel value="#{viewdatasource}" id="dynamicViewPanel1" var="viewEntry" pageName="/page.xsp">  
    <xp:eventHandler event="onColumnClick" submit="true" refreshMode="complete"> 
     <xp:this.action><![CDATA[#{javascript:var url="/page.xsp?action=openDocument&documentId="+viewEntry.getNoteID(); 
context.redirectToPage(url); 
}]]></xp:this.action> 
    </xp:eventHandler> 
</xe:dynamicViewPanel> 
+0

ありがとうvarがある場合、あなたは、このようにそれを行うことができます!私は今openDocumentの問題を解決するためにeventHandlerを使用しましたが、私は他の問題を解決するためにカスタマイザBeanを実装します。 –

+1

+1、.setOpenDocAsReadonly(true)は私のために働いた –

+0

プロパティで1回のクリック - Beanの作成よりもずっと簡単です。 –

0

SSJSでは、あなたはおそらくこれを追加することで、ドキュメント内のリンクを試すことができます:ここでは例ですeditDocument "、" openDocument "));

4

あなたがのXPageを使用する代わりに、そのフォームを使用して文書を開きたい場合はrowDataがViewPanel

<xp:eventHandler event="onColumnClick" submit="true" refreshMode="complete" id="eventHandler1"> 
    <xp:this.action><![CDATA[#{javascript:if (!rowData.isCategory()) 
     var url = "0/"+rowData.getUniversalID()+"?OpenDocument" 
     facesContext.getExternalContext().redirect(url);}]]> 
    </xp:this.action> 
</xp:eventHandler 
+0

非常にうまく動作します、ありがとう! –

+0

1つの注意点は、onColumnClickイベントがビュー内のアクティブな列リンク(すべての列ではない)にのみ反応することです。ビュー列にアクティブでない場合は、Webリンクである列を有効にします。リンク。 –

関連する問題