bootstrap 类 与 Liferay portlet 首选项冲突

bootstrap classes conflicting with Liferay portlet preferences

我在正确显示我的 portlet 首选项(Liferay 6.2.0 服务器)时遇到困难。 我只想要右上角 window 可以正确显示。

我已经根据互联网教程设置了我的 Portlet 首选项。 如果我点击右上角,点击配置,然后设置,就会显示我的首选项页面,它工作正常。

然而,我的 portlet 的大部分 JSP 使用 Bootstrap... 不幸的是,bootstrapp css [=47= 之间似乎存在冲突]es 和 portlet 首选项页面(由 Liferay 设计)。 因此,如果我单击设置(右上角按钮)进入非 bootstrap 页面,一切正常。 如果我使用 bootstrap 单击它进入页面,则不会加载 portlet 首选项(也不会加载外观 window)。

我通过将 Bootstrap2.3.2 css 和 js 文件复制到我的 portlet 项目中的适当目录并将它们包含到 jsps 中来实现 bootstrap .

我考虑过花 2 个小时试图找到导致此混乱的确切 bootstrap class(es) 并将它们从 bootstrap css 文件中排除。 但我放弃了,因为浏览器 cache/history 问题导致我一直 return 结果不连贯。

一种更智能的方法可能是从我的 bootstrap 页面直接调用配置 jsp(不使用右上角的 liferay window)。 我可以加载页面,但使用保存按钮不会保存选项。 我想我需要添加一些额外的代码,这些代码是在从 right/top window.

调用配置 jsp 时由 Liferay 自动生成的

我的config.jsp如下:

<%@include file="/jsp/include/init.jsp"%>


<liferay-portlet:actionURL portletConfiguration="true"
    var="configurationURL" />

<%  

String value1_cfg = GetterUtil.getString(portletPreferences.getValue("--value1--", ""));
String value2_cfg = GetterUtil.getString(portletPreferences.getValue("value2", ""));
...
%>

<aui:form action="<%= configurationURL %>" method="post" name="fm">
    <aui:input name="<%= Constants.CMD %>" type="hidden"
        value="<%= Constants.UPDATE %>" />

...miscellanous form controls that let users change the options....


    <aui:button-row>
        <aui:button type="submit" />
    </aui:button-row>
</aui:form>

<%!
public boolean checkListSelected(String value, String param){
 if(value.equals(param)) 
     return true;
 else
     return false;
}
%>

有谁知道我该如何解决这个问题? 我对任何解决方案持开放态度: - 更好的导入方式 Bootstrap - 隔离冲突的 bootstrap classes 如果有人知道哪些是混乱的 - 直接通过 config.jsp

设置选项

提前致谢。

单个 portlet 永远不应添加像 Bootstrap 这样的 CSS 框架,该框架旨在为整个页面工作,因为 portlet 只负责自己的一小部分,不应干扰页面上的其他元素。

好消息是: 默认的 Liferay 主题分别是。 AlloyUI 已集成 Bootstrap 2.3.2,因此无需将其包含在您的 portlet 中。

如果您已经实现了自己的主题,那么您只需要扩展 styledclassic 主题以获得 Bootstrap 类 包括在内。