浏览 2404 次
|
锁定老贴子 主题:再次提出Portal action问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2004-12-23
这次的问题是这样的,在不扩展jsr168的标准下,我是否能够将某一个服务器下的某个web程序拉到另一个服务器下的portlet中,而且还能正常跑起来?
比如,我现在创建一个门户,然后将yahoo,google的首页放到我的两个窗子里。然后点击查询的时候将结果显示在这些小窗子里 我现在的方案是模仿yahoo和google的页面,设计自己的portlet。然后将请求转发到这些网站再重新显示。 可能利用iframe也能够完成 除了这些技巧,有没有标准的办法?? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2004-12-24
wsrp,这个只是听说过,没有用过
|
|
| 返回顶楼 | |
|
时间:2004-12-24
当然可以的
看来你们才开始研究portal的 plumtree到上面去找找的,实现起来很容易的 |
|
| 返回顶楼 | |
|
时间:2004-12-24
willmac 写道 当然可以的
本人比较愚钝,请willmac讲讲好么?
看来你们才开始研究portal的 plumtree到上面去找找的,实现起来很容易的 |
|
| 返回顶楼 | |
|
时间:2004-12-25
咳,类似proxy的东西,什么都可以吃的
用于弱整合,不过这是我极力反对的,portal是内容管理和流程控制的容器的 是web容器的更高层次,而不是infomation hub. 多余的话,不说了,这些年说累了。 plumtree的代码贴出来,有用就拿去吧 ps:rss解决方案也类是的,不想改代码都可以用这个方案的 虽然这个代码有些suck的,也就一个思路的 嗬嗬,这个代码仅限google,自己的应用,自己写proxy的,看的时候注意 [code:1] package com.plumtree.portlet.portlets; import com.google.soap.search.*; import java.io.IOException; import java.io.PrintWriter; import javax.portlet.*; public class GooglePortlet extends GenericPortlet { private static final String SEARCH_QUERY = "searchQuery"; private static final String START_RESULT = "startResult"; public static final String KEY = "KEY"; public static final String CONTENT_TYPE_HTML = "text/html;charset=UTF-8"; public GooglePortlet() { } public void processAction(ActionRequest request, ActionResponse response) throws UnavailableException, PortletSecurityException, PortletException, IOException { String searchQuery = request.getParameter("searchQuery"); if(null != searchQuery) response.setRenderParameter("searchQuery", searchQuery); String startResult = request.getParameter("startResult"); if(null != startResult) response.setRenderParameter("startResult", startResult); } protected void doHelp(RenderRequest request, RenderResponse response) throws UnavailableException, PortletSecurityException, PortletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<table>"); out.println("<tr>"); out.println("<td>"); PortletURL renderURL = response.createRenderURL(); renderURL.setPortletMode(PortletMode.VIEW); out.println("The Google Portlet searches Google, using the specified query.<BR/> The number of results returned at a time is ten- this is a limitation of the Google API<BR/> To change the key, or adust safe search, contact your administrator.<BR/> <a href=\"" + renderURL.toString() + "\">back</a>"); out.println("</td>"); out.println("</tr>"); out.println("</form>"); out.println("</table>"); } protected void doView(RenderRequest request, RenderResponse response) throws UnavailableException, PortletSecurityException, PortletException, IOException { try { String searchQuery = request.getParameter("searchQuery"); String startResult = request.getParameter("startResult"); int totalResults = 0; response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String key = getInitParameter("key"); if(null == key || key.equals("")) { out.println("Key for search is not available. Check with your administrator to obtain the Google API Key"); return; } StringBuffer buff = new StringBuffer(200); buff.append("<SCRIPT language=\"Javascript\">function openGoogleWin(href){"); buff.append("var newWin = window.open(href);"); buff.append("}</SCRIPT>"); out.print(buff.toString()); WindowState state = request.getWindowState(); WindowState otherState = null; if(state.equals(WindowState.MAXIMIZED)) otherState = WindowState.NORMAL; else otherState = WindowState.MAXIMIZED; PortletURL otherUrl = response.createRenderURL(); if(!state.equals(WindowState.MAXIMIZED)) { otherUrl.setWindowState(otherState); out.println("<a href=\"" + otherUrl.toString() + "\">" + otherState.toString() + "</a>"); } GoogleSearchResult result = null; GoogleSearchResultElement elements[] = null; if(null != searchQuery) { GoogleSearch googleSearch = new GoogleSearch(); googleSearch.setKey(key); googleSearch.setQueryString(searchQuery); if(null != startResult) { int start = Integer.parseInt(startResult); googleSearch.setStartResult(start); } result = googleSearch.doSearch(); elements = result.getResultElements(); } PortletURL actionURL = response.createActionURL(); actionURL.setWindowState(state); out.println("<table>"); out.println("<form name=\"inputForm\" target=\"_self\" method=\"POST\" action=\"" + actionURL.toString() + "\">"); out.println("<tr>"); out.println("<td>"); PortletURL renderLink = response.createRenderURL(); renderLink.setPortletMode(PortletMode.HELP); out.println("<a href=\"" + renderLink + "\">help</a>"); out.println("</td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>"); out.println("&"); out.println("</td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>"); out.println("<input type=\"text\" name=\"searchQuery\" value=\"\">"); out.println("<input name=\"inputSubmit\" type=\"submit\" value=\"submit\">"); out.println("</td>"); out.println("</tr>"); out.println("</form>"); out.println("</table>"); if(null != searchQuery) { out.println("<table>"); out.println("<tr>"); out.println("<td>"); totalResults = result.getEstimatedTotalResultsCount(); out.println("# of results is " + totalResults); out.println("</td>"); out.println("</tr>"); for(int i = 0; i < elements.length; i++) { GoogleSearchResultElement element = elements[i]; out.println("<tr>"); out.println("<td>"); out.println("<a href=\"javascript:openGoogleWin('" + element.getURL() + "');\">" + element.getTitle() + "</a>"); out.println("</td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>"); out.println(element.getSummary()); out.println("</td>"); out.println("</tr>"); } out.println("<tr>"); out.println("<td>"); out.println("&"); out.println("</td>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>"); out.println("&"); out.println("</td>"); out.println("</tr>"); if(totalResults > 0) printLinks(response, out, totalResults, result.getStartIndex(), searchQuery, state); out.println("</table>"); } } catch(Exception e) { throw new PortletException(e); } } private void printLinks(RenderResponse response, PrintWriter out, int results, int currentPos, String searchQuery, WindowState windowState) { int total = 10; total = results <= 100 ? results / 10 : total; if(currentPos != 1) currentPos = (currentPos - 1) / 10; out.println("<tr>"); out.println("<td>"); for(int i = 1; i <= total; i++) { if(i == currentPos) { out.print(i); } else { PortletURL actionURL = response.createActionURL(); try { actionURL.setWindowState(windowState); } catch(Exception e) { } actionURL.setParameter("searchQuery", searchQuery); actionURL.setParameter("startResult", "" + i * 10); out.print("<a href=\""); out.print(actionURL.toString()); out.print("\">"); out.print(i); out.println("</a>"); } out.print("&"); } out.println("</td>"); out.println("</tr>"); } static { SEARCH_QUERY = "searchQuery"; START_RESULT = "startResult"; KEY = "KEY"; CONTENT_TYPE_HTML = "text/html;charset=UTF-8"; } } [/code:1] |
|
| 返回顶楼 | |
|
时间:2005-04-26
占个坑
|
|
| 返回顶楼 | |
|
时间:2005-04-30
呵呵,willmac的代码在有代理服务器的情况下就跑不动啦。还是用iframe好点。方便,省事。
|
|
| 返回顶楼 | |








