Liferay 7 jsp hook 模块不起作用



我试图通过模块覆盖JSP。模块被部署,但它不会产生任何影响。我尝试覆盖create_account.jsp。我的bnd。BND看起来像这样:

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

My Module与服务器同步。我使用开发人员模式和Liferay 7.0.1 GA2。

create_account.jsp位于以下路径下:

/测试模块/src/main/resources/meta - inf/资源/create_account.jsp

知道为什么它不工作吗?

我的portlet的状态是installed。我可以做compileJSP taks,它改变为resolved。我认为它应该是活动的像所有其他模块。

我也无法解析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的情况下再次构建了孔项目,我得到了同样的问题。当我试图部署它发生错误。但是它仍然部署在服务器上,状态为installed

PS C:DEVGitfaberplace-workspacemodulescom.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复制到deploy文件夹时,状态变为resolved

这和这里的问题是一样的:在liferay 7中部署osgi包(jsp钩子)

进一步信息:

我在windows上工作。

当我部署时,日志显示如下:

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]

它看起来像下面的图片:

登录屏幕截图

fragment永远不会被激活。它在解析主机模块时附加到主机模块上。这听起来像你有一个问题是通过手动复制你的片段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,然后点击 sign In时,我可以看到红色文本"changed"。这对你有用吗?

最新更新