1

マルチボックス (ライトボックスの拡張バージョンで、写真だけでなく、他の種類のコンポーネント、私の場合は HTML フィードバック フォーム) を備えたポートレットを IBM WebSphere Portal 6.1 にデプロイしようとしています。

http://www.liamsmart.co.uk/Downloads/multiBox/に掲載されているように、MooTools 1.2 用の multiBox を使用しています。

ダウンロードした zip ファイルを自分のマシンに解凍すると、純粋な HTML であるため正常に動作します。ただし、ポートレット プロジェクトにすべてのファイルを含める場合 (RAD 8.0 を使用して JSR-286 準拠の基本的なポートレットを作成し、Java 1.5 とランタイムを WebSphere Portal 7.0 スタブとしてターゲットに設定します。これらはすべて、新しいポートレット プロジェクト ウィザードに従います)。

今週ずっと、この種の展開に関する情報を探していましたが、何も見つかりませんでした。必要なヘルプがどこにあるか知っている人はいますか?

前もって感謝します。

4

1 に答える 1

0

OK、以前にこの種の作業を行ったことがある人に最終的に尋ねることができ、開発を完了するためのガイドラインをいくつか教えてくれました。

私がやって終わったことは次のとおりです:

まず、ポートレットの doView メソッドでこれを行いました (この例では、/Feedback/src/com/ibm/feedback/FeedbackPortlet.java)。

public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    response.setContentType(request.getResponseContentType());

    String targetJsp = "/_Feedback/jsp/html/FeedbackPortletView.jsp";
    String nextTask = request.getParameter("nextTask");
    if ("verFormulario".equalsIgnoreCase(nextTask)) {
        targetJsp = "/_Feedback/multibox/files/feedbackform.jsp";
    }

    PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(targetJsp);
    rd.include(request, response);
}

次に、ポートレット ビューの JSP (この例では /Feedback/WebContent/_Feedback/jsp/html/FeedbackPortletView.jsp) では、次のようになります。

<%@page session="false" contentType="text/html" pageEncoding="ISO-8859-1" import="java.util.*,javax.portlet.*,com.ibm.feedback.*"%>
<%@page import="com.ibm.wps.l2.urlspihelper.portletrequest.PortletURLHelper"%>
<%@page import="javax.portlet.PortletURL"%>
<%@page import="javax.servlet.jsp.jstl.core.LoopTagStatus"%>
<%@page import="java.util.HashMap"%>
<%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<%@taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model" prefix="portlet-client-model"%>

<portlet:defineObjects/>
<portlet-client-model:init>
    <portlet-client-model:require module="ibm.portal.xml.*"/>
    <portlet-client-model:require module="ibm.portal.portlet.*"/>   
</portlet-client-model:init> 
<head> 

<%
    PortletURL url = renderResponse.createRenderURL();
    url.setParameter("keepSession", "true");
    url.setParameter("saveMap", "true");

    StringBuffer sb = new StringBuffer();

    HashMap params = new HashMap();
    params.put("nextTask", new String[] { "verFormulario" });
%>

<!-- Copy code below -->
<link type="text/css" rel="stylesheet" href="<%=renderResponse.encodeURL(renderRequest.getContextPath())%>/_Feedback/multibox/css/multibox.css"/> 

<script type="text/javascript" src="<%=renderResponse.encodeURL(renderRequest.getContextPath())%>/_Feedback/multibox/js/mootools-1.2.4-core-yc.js"></script> 
<script type="text/javascript" src="<%=renderResponse.encodeURL(renderRequest.getContextPath())%>/_Feedback/multibox/js/mootools-1.2.4.4-more-yc.js"></script> 
<script type="text/javascript" src="<%=renderResponse.encodeURL(renderRequest.getContextPath())%>/_Feedback/multibox/js/overlay.js"></script> 
<script type="text/javascript" src="<%=renderResponse.encodeURL(renderRequest.getContextPath())%>/_Feedback/multibox/js/multibox.js"></script> 
<script type="text/javascript">
    window.addEvent('domready', function(){
        //call multiBox
        var initMultiBox = new multiBox({
            mbClass: '.mb',//class you need to add links that you want to trigger multiBox with (remember and update CSS files)
            container: $(document.body),//where to inject multiBox
            descClassName: 'multiBoxDesc',//the class name of the description divs
            path: './_Feedback/multibox/files/',//path to mp3 and flv players
            useOverlay: true,//use a semi-transparent background. default: false;
            maxSize: {w:600, h:400},//max dimensions (width,height) - set to null to disable resizing
            addDownload: false,//do you want the files to be downloadable?
            pathToDownloadScript: './_Feedback/multibox/js/forceDownload.asp',//if above is true, specify path to download script (classicASP and ASP.NET versions included)
            addRollover: true,//add rollover fade to each multibox link
            addOverlayIcon: true,//adds overlay icons to images within multibox links
            addChain: true,//cycle through all images fading them out then in
            recalcTop: true,//subtract the height of controls panel from top position
            addTips: true,//adds MooTools built in 'Tips' class to each element (see: http://mootools.net/docs/Plugins/Tips)
            autoOpen: 0//to auto open a multiBox element on page load change to (1, 2, or 3 etc)
        });
    });
</script>
<!-- Copy code above -->

<!-- Styles -->
<style type="text/css">
    body{
        font-family:Arial;
    }
</style>
<!-- Styles -->
</head>
<body style="width:800px; margin:30px auto 0 auto; color:#555;">
<div style="clear:both; height:0; line-height:0; overflow:hidden"></div>

<%
    String strURL = PortletURLHelper.generateSinglePortletRenderURL(params, null, null, renderRequest, renderResponse);
%>
<a href='<%=strURL%>' id="mb11" class="mb" title="This is shown when hover the link and as a title for multibox dialog" rel="width:600,height:400">This is the link which opens multibox dialog</a>
<div class="multiBoxDesc mb11 mbHidden">This is shown as description (subtitle) for multibox dialog</div>
</body>

:

  1. /Feedback/WebContent/_Feedback/multibox/files/feedbackform.jsp は、マルチボックスにバンドルされた HTML ページ (blank.htm ファイル) に基づく単なる JSP であり、マルチボックス ダイアログ内に表示されます。
  2. これは、記事Portal 6.1 および 7.0 Advanced URL Generation Helper classesに添付されているライブラリを使用します(リンクについては @udo-held に感謝します)。
  3. マルチボックス zip ファイルの内容は、ファイル構造を維持したまま、/Feedback/WebContent/_Feedback に抽出されました。
于 2011-12-09T20:38:08.050 に答える