2012-04-29 4 views
4

동적 뷰 패널을 사용하여 XPage의 다양한 뷰를 표시합니다. 이로 인해 몇 가지 문제가 발생했습니다. 첫째,보기 내부에 설정된 열 스타일링은 XPage에 표시되지 않습니다 (예 : 열 머리글을 굵게 표시). 더 중요한 것은 뷰에 뷰에있는 문서에 대한 링크가 포함되어 있지만 링크에는 모두 action=editDocument이 붙어 있는데 여기서는 action=openDocument으로 변경하려고합니다. 그러나이 속성을 변경할 수있는 방법을 찾을 수 없습니다.동적 뷰 패널 사용

답변

8

사용자 정의 bean을 사용하여 동적 뷰 패널 제어기의 customizerBean 특성에 해당 bean의 이름을 추가해야합니다.

사용자 정의 bean에서 찾고자하는 것과 같은 스타일링을 제어 할 수 있지만 사용자가 직접 Java bean을 코딩해야합니다. 제시 갤러거 (Jesse Gallagher)는 확장 된 커스터마이즈 빈의 훌륭한 예를 만들었고 Github에도 넣었다 : https://github.com/jesse-gallagher/Domino-One-Offs. 당신이 사용할 수있는 오픈 도큐먼트에 editDocument 변경에 대한 특정 질문에 대한

-

:

는 주제에 대한 자신의 블로그 게시물에서보세요 다음 사용자 정의 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); 
    } 
} 

클래스를 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를 사용했고 다른 커다란 문제를 해결하기 위해 customizer bean을 구현합니다. –

+1

+1, .setOpenDocAsReadonly (true) 나를 위해 일했습니다 –

+0

빈을 만드는 것보다 훨씬 간단한 속성에서 1 클릭하십시오. –

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

주목할 점은 onColumnClick 이벤트는 뷰 (모든 열이 아닌)에있는 활성 열 링크에만 응답한다는 점입니다. 따라서보기 열에서 활발하지 않으면 모든 열이 웹 링크로 설정되고 첫 번째 열만이 링크. –