換句話說,我需要查看哪些數據庫表用於將Portlet映射到組織中的頁面?如果有這樣的事情?!我們正在使用Liferay 6.1.20我如何找到 - 在Liferay 6.1的哪些頁面上部署哪些Portlet?
回答
除了marketplace portlet小門戶。
如果你有對數據庫的訪問,你可以觸發一個簡單的查詢就Layout
表要知道所有的網頁您的portlet添加什麼:
SELECT * FROM Layout WHERE typeSettings LIKE '%my_WAR_myportlet%';
您也可以建立一個FinderImpl與服務構建器通過portlet執行此查詢並將該portlet添加到頁面以顯示您想要的任何格式。
下面是無需部署任何portlet並無需訪問數據庫,在MySQL數據庫測試的另一種解決方案:
- 進入服務器管理
- 轉到腳本選項卡
- 選擇
Beanshell
從下拉菜單 將以下腳本代碼粘貼到textarea中並按下按鈕執行:
import com.liferay.portal.kernel.dao.jdbc.DataAccess; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.util.StringBundler; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con = DataAccess.getUpgradeOptimizedConnection(); // your custom query here String sql = "SELECT * FROM Layout WHERE typeSettings LIKE '%my_WAR_myportlet%'"; String limitQuery = " LIMIT 0, 1000"; String sqlQuery = sql + limitQuery; out.println("SQL Query: "+ sqlQuery); ps = con.prepareStatement(sqlQuery); rs = ps.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); List rows = new ArrayList(); List columnLabels = new ArrayList(); columnLabels.add("Sr. No."); for (int c = 1; c <= columnCount; c++) { String cl = rsmd.getColumnLabel(c); columnLabels.add(cl); } while (rs.next()) { List row = new ArrayList(columnCount); for (int c = 1; c <= columnCount; c++) { Object value = rs.getObject(c); row.add(value); } rows.add(row); } // --- formatting the results --- out.append("<div class=\"lfr-search-container \"><div class=\"results-grid\">"); out.append("<table class=\"taglib-search-iterator\">"); out.append("<thead>"); out.append("<tr class=\"portlet-section-header results-header\">"); for (String value : columnLabels) { out.append("<th>"); out.append(value); out.append("</th>"); } out.append("</tr>"); out.append("</thead>"); out.append("<tbody>"); boolean alt = false; long resultsCount = 1; for (List line : rows) { out.append("<tr class=\"portlet-section-alternate results-row " + (alt ? "alt" : "") + "\">"); // for sr. no. out.append("<td>"); out.append(resultsCount + ""); out.append("</td>"); resultsCount = resultsCount + 1; for (Iterator iterator = line.iterator(); iterator.hasNext();) { Object value = (Object) iterator.next(); out.append("<td>"); if (value != null) { out.append(value.toString()); } else { out.append("<span style=\"font-style:italic\">null</span>"); } out.append("</td>"); } out.append("</tr>"); alt = !alt; } out.append("</tbody>"); out.append("</table>"); out.append("</div></div>"); } catch (Exception exp) { out.println("ERROR: " + exp); throw exp; } finally { DataAccess.cleanUp(con, ps, rs); }
請記住字符串
my_WAR_myportlet
更改爲portletId- 不用說,你可以修改腳本來更新的款式和可顯示選擇列。你也可以運行任何MySQL查詢,只需更新
String sql
。
希望這有助於。
就像一個魅力一樣工作,這真的很酷!從來沒有在控制面板的腳本選項卡中。現在我已經使用了它。靜止學習Liferay。謝謝你的幫助! – 2014-10-09 13:44:53
:-)我的榮幸。但在stackoverflow有一種不同的方式來說謝謝你...希望你知道我的意思;-) ...嘿 – 2014-10-09 17:38:58
我意識到,但我沒有'資源',謝謝你呢:( – 2014-10-29 14:58:55
這是一個解決方案,一個解決您的問題的免費市場插件。
http://www.liferay.com/it/marketplace/-/mp/application/27156990
感謝您的簡單解決方案!不能投票,當我有一些聲譽時會做。 – 2014-10-06 14:08:00
下面是一個代碼來獲取所有從第一列
ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
Layout layout = themeDisplay.getLayout();
LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();
List<Portlet> portlets = layoutTypePortlet.getAllPortlets("column-1");
for (Portlet portlet : portlets) {
// print your portlet.getPortletId() or do whatever you need
}
或者只是調用layoutTypePortlet.getAllPortlets()來獲取頁面上的所有portlet – 2017-01-18 13:03:15
[版面]中,你可以找出哪些portlet(typeSettings)部署在哪個頁面
- 1. portlet部署到Liferay
- 2. JSF的portlet的Liferay上6.1
- 3. 如何將Portlet部署到Liferay?
- 4. 如何從Eclipse部署portlet到Liferay
- 5. 如何找到Liferay的特定頁面上添加portlet的?
- 6. ASP.NET:我有哪些部署選項?
- 7. 在Liferay上部署JSR 286 portlet
- 8. 如何找到哪些元素在網頁上打破HTTPS?
- 9. 如何找出頁面上包含哪些字體?
- 10. 如何找到哪些CSS文件用於當前頁面
- 11. 部署Liferay 6.1主題
- 12. SSL證書。哪些頁面?
- 13. Liferay portlet部署Java錯誤
- 14. 我可以在哪些服務器上部署Ruby on Rails?
- 15. 哪些配置文件我可以在appfog上部署concrete5
- 16. 如何確定網頁的哪些部分是加密的,哪些不是?
- 17. Liferay 6.1 portlet:部署時無法獲得JSONWebService掃描
- 18. 如何找出哪些圖像是PDF中的哪些圖像?
- 19. 如何找出哪些座標屬於HoughLinesp後的哪些線?
- 20. Liferay:看不到部署的portlet
- 21. 如何從liferay中取消部署portlet?
- 22. 部署.NET Framework 4.0有哪些風險?
- 23. 得到哪些IP頁面是PHP
- 24. ClickOnce部署有哪些陷阱?
- 25. 將portlet放置在liferay頁面上
- 26. 在div中加載了哪些頁面
- 27. 如何查找哪些表在我的表上有外鍵?
- 28. 當我在liferay中一個接一個地部署兩個portlet時,第二個部署的portlet正在取消部署liferay中的第一個部署的portlet
- 29. Portlet不會從LIFERAY 6.1的網站頁面中刪除
- 30. 在Liferay Portlet內部署Web項目
layoutset是你正在尋找的表的表。此外,liferay市場還有一個應用程序可用(portlet位置跟蹤器) – 2014-10-03 20:39:04
以及佈局表。 – 2014-10-07 07:34:35