Dynamic View Panelを使用して、単一のXPage内にさまざまなビューを表示しています。これにより、いくつかの問題が発生しました。まず、ビュー内で設定された列のスタイル設定が XPage に表示されません (例: 列ヘッダーを太字にする)。さらに重要なことは、ビューにはビュー内のドキュメントへのリンクが含まれていますが、リンクにはすべて が追加されているaction=editDocument
ため、これを に変更したいと考えていaction=openDocument
ます。ただし、このプロパティを変更する方法が見つかりません。
3 に答える
これにはカスタマイザ Bean を使用し、その Bean の名前をcustomizerBean
Dynamic View Panel コントロールのプロパティに追加する必要があります。
カスタマイザー Bean では、探しているものなどのスタイリングを制御できますが、Java Bean を自分でコーディングする必要があります。Jesse Gallagher は、拡張されたカスタマイザー Bean の優れた例を作成し、Github ( https://github.com/jesse-gallagher/Domino-One-Offs ) にも掲載しています。
このテーマに関する彼のブログ投稿をご覧ください。
--
editDocument から openDocument への変更に関する特定の質問については、次のカスタマイザ Bean の小さな例を使用できます。
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);
}
}
Bean として使用できるようにするには、クラスを faces-config.xml に追加することを忘れないでください。
カスタマイザ Bean の代わりに、onColumnClick イベントを使用して独自のリダイレクトを行うことができます。次に例を示します。
<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>
rowData
XPageを使用する代わりにフォームを使用してドキュメントを開く場合は、次のように実行できます。
<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
SSJS では、これを追加してドキュメント内のリンクを試すことができます。
context.redirectToPage(@ReplaceSubstring(context.getUrl().toString(),"editDocument","openDocument"));