浏览 5265 次
锁定老帖子 主题:再次提出Portal action问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-12-23
比如,我现在创建一个门户,然后将yahoo,google的首页放到我的两个窗子里。然后点击查询的时候将结果显示在这些小窗子里 我现在的方案是模仿yahoo和google的页面,设计自己的portlet。然后将请求转发到这些网站再重新显示。 可能利用iframe也能够完成 除了这些技巧,有没有标准的办法?? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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的,看的时候注意 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"; } } |
|
返回顶楼 | |
发表时间:2005-04-30
呵呵,willmac的代码在有代理服务器的情况下就跑不动啦。还是用iframe好点。方便,省事。
|
|
返回顶楼 | |