0

我试图通过模块覆盖 JSP。该模块已部署,但没有任何效果。我尝试覆盖 create_account.jsp。我的 bnd.bnd 看起来像这样:

Bundle-Version: 1.0.0 Fragment-Host: com.liferay.login.web;bundle-version="1.0.5" -sources: true

我的模块与服务器同步。我使用开发模式和 Liferay 7.0.1 GA2。

create_account.jsp 位于以下路径下:

/test-module/src/main/resources/META-INF/resources/create_account.jsp

任何想法为什么它不起作用?

我的 portlet 的状态是已安装。我可以执行 compileJSP 任务并将其更改为已解决。我认为它应该像所有其他模块一样处于活动状态。

我也无法解析来自 JSP 的变量,这些变量位于其他 JSP 文件中。例如:PropsValues可能是build.gradle中存在错误/缺失的依赖项吗? dependencies { compile group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.0.0" compile group: "com.liferay.portal", name: "com.liferay.util.taglib", version: "2.0.0" compile group: "javax.portlet", name: "portlet-api", version: "2.0" compile group: "javax.servlet", name: "servlet-api", version: "2.5" compile group: "jstl", name: "jstl", version: "1.2" compile group: "org.osgi", name: "org.osgi.compendium", version: "5.0.0" }

我在没有IDE的情况下再次构建了hole项目,我遇到了同样的问题。当我尝试部署它时,会发生错误。但它仍然部署在状态为installed的服务器上。

PS C:\DEV\Git\faberplace-workspace\modules\com.clavisit.registration.hook.jsp> blade deploy
:modules:com.clavisit.registration.hook.jsp:compileJava UP-TO-DATE
:modules:com.clavisit.registration.hook.jsp:buildCSS UP-TO-DATE
:modules:com.clavisit.registration.hook.jsp:processResources UP-TO-DATE
:modules:com.clavisit.registration.hook.jsp:transpileJS SKIPPED
:modules:com.clavisit.registration.hook.jsp:configJSModules SKIPPED
:modules:com.clavisit.registration.hook.jsp:classes UP-TO-DATE
:modules:com.clavisit.registration.hook.jsp:jar
:modules:com.clavisit.registration.hook.jsp:assemble
:modules:com.clavisit.registration.hook.jsp:build

BUILD SUCCESSFUL

Total time: 5.486 secs
stop 482
org.osgi.framework.BundleException: Invalid operation on a fragment.
update 482 file:/C:/DEV/Git/faberplace-workspace/modules/com.clavisit.registration.hook.jsp/build/libs/com.clavisit.regi
stration.hook.jsp-1.0.4.jar
Updated bundle 482
start 482
org.osgi.framework.BundleException: Invalid operation on a fragment.
Error
  0. [DeployCommand.installOrUpdate] aQute/bnd/header/Parameters

当我将刀片部署后的 JAR 复制到部署文件夹中时,状态更改为已解决

这与这里的问题相同: Deploying an osgi bundle (jsp hook) in liferay 7

更多信息:

我在窗户上工作。

当我部署时,日志显示以下内容:

07:05:43,732 INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:252] Processing blade.hook.jsp-1.0.0.jar
07:05:51,904 INFO  [Refresh Thread: Equinox Container: b0a1d0af-1044-0016-189b-a4fba6a2d683][BundleStartStopLogger:38] STOPPED com.liferay.login.web_1.0.5 [219]
07:05:52,494 INFO  [Refresh Thread: Equinox Container: b0a1d0af-1044-0016-189b-a4fba6a2d683][BundleStartStopLogger:35] STARTED com.liferay.login.web_1.0.5 [219]

它看起来像下图:

登录截图

4

1 回答 1

0

片段永远不会被激活。它在解析主机模块时附加到主机模块。听起来您遇到的问题之一是通过手动将片段 JAR 复制到 Liferay 的deploy文件夹来解决的,对吧?您可以确保片段附加到主机的一件事是,从 gogo shell 中输入refresh [host bundle id]。不完全确定,但这应该会让宿主捡起碎片。

此外,请在blade.hook.jsp此处查看示例:https ://github.com/liferay/liferay-blade-samples/tree/master/gradle/blade.hook.jsp

build.gradle文件仅将版本设置为 1.0.0,并且bnd.bnd除了您的文件之外,还包括

-jsp: *.jsp,*.jspf
-plugin.jsp: com.liferay.ant.bnd.jsp.JspAnalyzerPlugin

我会从那里开始。

编辑以解决评论:我通过执行以下操作从命令行测试了liferay-blade-samples片段项目:

  1. 导航到 liferay-blade-samplesclone 并进入 gradle/blade.hook.jsp 并构建项目。
  2. 将 JAR 复制到我正在运行的 Liferay CE GA2 安装deploy文件夹中。我在日志中看到了这一点:

15:26:51,185 INFO [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:252] Processing blade.hook.jsp-1.0.0.jar 15:26:59,253 INFO [Refresh Thread: Equinox Container: 10c85452-c442-0016-189b-ada8a71b73c4][BundleStartStopLogger:38] STOPPED com.liferay.login.web_1.0.5 [171] 15:26:59,659 INFO [Refresh Thread: Equinox Container: 10c85452-c442-0016-189b-ada8a71b73c4][BundleStartStopLogger:35] STARTED com.liferay.login.web_1.0.5 [171]

JSP 就是这样做的:

<p style="color: red">changed</p>

当我退出 Liferay 然后单击登录时,我可以看到红色文本“已更改” 。那对你有用吗?

于 2016-07-01T14:07:25.170 回答