3

Dynamic View Panelを使用して、単一のXPage内にさまざまなビューを表示しています。これにより、いくつかの問題が発生しました。まず、ビュー内で設定された列のスタイル設定が XPage に表示されません (例: 列ヘッダーを太字にする)。さらに重要なことは、ビューにはビュー内のドキュメントへのリンクが含まれていますが、リンクにはすべて が追加されているaction=editDocumentため、これを に変更したいと考えていaction=openDocumentます。ただし、このプロパティを変更する方法が見つかりません。

4

3 に答える 3

8

これにはカスタマイザ Bean を使用し、その Bean の名前をcustomizerBeanDynamic 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>
于 2012-04-29T14:52:46.637 に答える
5

rowDataXPageを使用する代わりにフォームを使用してドキュメントを開く場合は、次のように実行できます。

<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
于 2012-11-28T09:21:20.530 に答える
0

SSJS では、これを追加してドキュメント内のリンクを試すことができます。

context.redirectToPage(@ReplaceSubstring(context.getUrl().toString(),"editDocument","openDocument"));

于 2012-05-03T10:53:21.327 に答える