随着DXP版本的发布,Liferay在它的基础产品上做了一个范式转换。通过这个版本,Liferay现在已经定义了一个路线图,以应对未来的技术趋势,比如微服务、数字体验管理、更智能、更快速的构建管理。...架构在非常基础的层次上发生了变化,应用程序被划分为使用OSGi框架的不同包。这几乎改变了Liferay的所有工作方式。...现在每个portlet都以微服务的形式与另一个portlet通信,这与早期版本中的IPC不同。所有portlet属性现在都很容易公开,并且可以跨portlet使用。...有了这些选择,组织和开发人员可以在Liferay开始开发时选择方便的构建工具 优点: Liferay现在面向更大的社区开放,社区中有精通不同构建工具的开发人员。...Liferay现在允许您访问自定义Java库并在实现中使用它们。 好处: 代码的重用是关键的优势,因为如果不想的话,不需要将逻辑重构为Liferay。
工作流 这里主要指支持跨越不同数据源和应用的工作流。 支持不同的客户端 包括主流web浏览器,PDA等。 1、用户应用 用户单点登录,更加用户身份显示用户自定义的门户。...个性化工作台:为了增加用户对个性化门户门户的依赖性和便捷性,实现我的工作台功能。用户可将经常访问的功能菜单地址添加到我的工作台。...可根据实际情况,个性化设置资源的显示属性,例如信息内容的列表条数,标题显示长度,显示字段,自动刷新时间间隔等。 统一搜索功能:用户可集成搜索引擎,实现整个门户资源统一搜索服务。...GridSphere(第一个支持JSR168规范的开源portal框架) eXo平台(当前非常流行) Liferay(当前非常流行,良好的用户界面以及丰富的内建portlets...一个门户主页可以有多个Widget,通过不同的Widget可以在一个界面上分别显示来自不同来源的信息。
当然用户自身也可以自定义解析器以拓展对危险类的限制,只需要实现TemplateClassResolver接口就好了,接下来会介绍到的 Liferay 就是通过其自定义的解析器LiferayTemplateClassResolver..." -> {$Proxy58@47272} "com.liferay.portlet.expando.service.impl.ExpandoValueLocalServiceImpl@15152694...文章开头提到过三种利用方式,但是由于 Liferay 自定义解析器的存在,均无法再被利用。...虽然白名单类拥有一个register方法,可自定义添加白名单类。...添加进黑名单。
无论是那个编辑器,如果能够添加一些自定义代码片段,能够大大提升代码的输入效率。 本文介绍如何在 Visual Studio Code 中添加自定义代码片段。...输入 post 以便插入 blog.walterlv.com 专用的博客模板: 在模板中,我们的的第一个焦点文字是标题,于是我们可以立刻输入博客标题: ▲ 博客标题占位符 当写完后按下 Tab...关于代码片段编写的更多细节 关于文件名称 在阅读前面的博客内容时,你可能注意到了:添加全局代码片段的时候,文件扩展名为 .code-snippets,例如 blog.code-snippets;添加语言特定的代码片段的时候...在前面那个比较复杂的博客代码片段中,{1:在此处添加标题} 就是一个占位符,而 {0:在此处编辑 blog.walterlv.com 的博客摘要} 就是光标的最终停留点。...这个时间我之前也在输入法中调过:常用输入法快速输入自定义格式的时间和日期(搜狗/QQ/微软拼音)。
Directory Opus 的工具栏 这是我的 Directory Opus 的界面(暂时将左侧的树关掉了): 下图是我目前添加的一些工具栏按钮: 自定义工具栏按钮 自定义的方法是,点击顶部的 设置...-> 自定义工具栏: 这时,会弹出自定义工具栏的对话框,并且所有可以被定制的工具栏现在都会进入编辑状态等待着我们对其进行编辑: 添加一个自定义按钮 你并不需要在自定义工具栏对话框上进行任何操作,只需要在一个现有的工具栏上点击右键...Directory Opus 使用命令编辑器集成 TortoiseGit 的各种功能 Directory Opus 使用命令编辑器添加 PowerShell / CMD / Bash 等多种终端到自定义菜单...在自定义完按钮之后,不要忘了关闭最开始弹出来的“自定义工具栏”的对话框。...一切皆命令 在阅读上面的博客定义完一些自己的命令之后,你再观察 Directory Opus 的其他工具栏按钮,包括左上角的菜单,你会发现其实 Directory Opus 中所有的功能按钮和菜单都是使用相同的机制建立起来的
0x00 hello world 最近在一个新项目中,尝试了vue2+typescript的组合,又又又碰到一个问题:定义了一个自定义控件Foo.vue,在控件中定义一个方法Bar(),使用自定义控件的时候...,添加ref='foo'并且希望通过使用this....$refs.foo.Bar()调用方法,当然是可以成功调用的,但是在TypeScript中,他会报错。...[图一] 后来我折腾了好久,想出了一个不是那么优雅的方法: [图2] 这个样子,虽然不报错了,但是生生的把TypeScript写成了AnyScript,如果我修改了Bar的定义,比如添加了一个参数,这边就不会提示错误...CombinedVueInstance; 我需要的是一个实例化之后的类型,所以Foo是我导入的一个变量,通过type of Foo取得它的类型,但是,但是我需要的是它实例化后的类型,所以还需要通过InstanceType
WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome) 发布于 2018-07-12 07:57...而且在最大化窗口之后,按钮高度继续压缩。标题栏只剩下 24 的高度,按钮只剩下 22 的高度了。 ? 这显然也模拟得不像。于是,我们霸气一点,直接把顶部边距改得更大。为了凑个整,我写 64 好了。...下面的窗口是我在 冷算法:自动生成代码标识符(类名、方法名、变量名) 中所述算法的一个应用,除了右上角的一个白色块,在保证接近原生窗口的情况下,定制了一些内容。 ?...▲ 一个试验品 为了保证标题栏的标题文字也尽可能地接近原生窗口,我也通过测量得出了用于显示标题的 的各种参数。整理之后,写成了下面的样式: ?...关于自绘标题栏按钮以模拟 UWP 原生按钮,可以阅读我的另一篇文章(代码太长,还是分开了好):WPF 应用完全模拟 UWP 的标题栏按钮。
WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。...然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。...下面的窗口是我在 冷算法:自动生成代码标识符(类名、方法名、变量名) 中所述算法的一个应用,除了右上角的一个白色块,在保证接近原生窗口的情况下,定制了一些内容。...▲ 一个试验品 为了保证标题栏的标题文字也尽可能地接近原生窗口,我也通过测量得出了用于显示标题的 的各种参数。...关于自绘标题栏按钮以模拟 UWP 原生按钮,可以阅读我的另一篇文章(代码太长,还是分开了好):WPF 应用完全模拟 UWP 的标题栏按钮。
作者:Longofo@知道创宇404实验室 时间:2020年3月27日 之前在CODE WHITE上发布了一篇关于Liferay Portal JSON Web Service RCE的漏洞,之前是小伙伴在处理这个漏洞...Liferay Portal对于JSON Web Service的处理,在6.1、6.2版本中使用的是 Flexjson库,在7版本之后换成了Jodd Json。...> type) {//设置转换器,和下面的设置全局转换器类似,不过这里可以传入自定义的转换器(比如将某个类的Data field,格式为03/27/2020,序列化时转为2020-03-27)...03 Liferay 漏洞分析 Liferay在/api/jsonws API提供了几百个可以调用的Webservice,负责处理的该API的Servlet也直接在web.xml中进行了配置: 随意点一个方法看看...作者查找了jodd.json.Parser#rootType的调用图(羡慕这样的工具): 通过向上查找的方式,作者找到了可能存在能指定根类型的地方,在com.liferay.portal.jsonwebservice.JSONWebServiceActionImpl
一、背景 官方提供的spring boot starter的配置项,我们用IDE配置的时候一般都有自动提示的,如下图所示 而我们自己自定义的配置却没有,对开发非常不友好容易打错配置,那这个是怎样实现的呢...二、提示原理 IDE是通过读取配置信息的元数据而实现自动提示的,而元数据在目录META-INF中的spring-configuration-metadata.json 或者 additional-spring-configuration-metadata.json...三、实现自动提示 以我这个自己开发的starter中的自定义配置文件为例,如果自己手动创建这些元数据的话工作量比较大,使用IDEA的话有自动生成功能 3.1....引入依赖spring-boot-configuration-processor 在zlt-swagger2-spring-boot-starter工程中添加以下jar包 ...重新编译项目 项目在重新编译后就会自动生成spring-configuration-metadata.json文件 四、测试 自定义的swagger配置已经能自动提示了 参考资料 https:/
一个portlet窗口包含一个标题栏,装饰,和portlet产生的内容。 PORTLET是什么 web客户通过portal实现的request/response范例与portlet交互。...通常,portlet中的动作会被portal接受,从而用户与portlet中的内容交互(比如点击portlet中的链接,提交form),提交到portlet的目标。 ...Portlet 和Servlet 的关系 Portlet 容器提供Portlet 执行的环境,包含很多Portlet 并管理它们的生命周期,保存Portlet 的定制信息。...Portal 通常给portlet 产生的标记片断加了标题,控制按钮和其他的装饰,这个新的片断叫portlet 窗口。然后portal 整合portlet 窗口到完整的文件,portal 页面。 ?...在收到请求后,portal 判断满足请求的portlets 列表。Portal 通过portlet 容器,调用portlets。
14.04 httpd(apache2 for Ubuntu) liferay 7.0 知识背景 这里的proxy server应当是指正向代理(forward proxy)。...如果你还想监听别端口,比如81,可以直接添加 Listen 81 后者主要设置一些关于虚拟主机的配置,apache2.conf中有一行代码 IncludeOptional sites-enabled...配置VirtualHost 配置完proxy server的监听端口,该配置虚拟主机了,打开默认配置文件,添加如下代码 ProxyRequests On ProxyVia On <VirtualHost...测试一下 设置到这里,proxy server已经设置完成,因此也可以来简单测试一下,比如打开FF浏览器,之后在Preference > Advanced > Connection中,选择manual...配置liferay 接下来就很简单了,只需要让liferay来使用我们配置好的proxy server即可。
只在测试时使用,用于编译和运行测试代码。不会随项目发布。...system跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它 解释: 对于scope=compile的情况(默认scope),也就是说这个项目在编译...在编译测试阶段,我们需要这个artifact对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包,所以无需我们这个artifact...今天开发web的时候,需要用到servlet-api,于是在pom.xml中添加依赖 javax.servlet <artifactId...:tomcat中也有servlet-api包,这样,发生了冲突 解决方法:添加provided,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了,完整依赖如下
今天我给大家带来了一个简单且有效的方法。...实现多人协作ONLYOFFICE还提供了多人协同办公功能,使用ONLYOFFICE连接到云平台,涵盖了ONLYOFFICE、Nextcloud、Liferay、ownCloud、kDrive、Seafile...在ONLYOFFICE工作区中使用创建、编辑和共同创作存储在文档模块中的文本文档、电子表格和演示文稿处理项目文档为邮件添加附件组织群发邮件,甚至更多在ONLYOFFICE工作区提供的项目模块中你可以创建个人或团体项目...添加自定义任务状态。协作方法;在实时共同编辑文件时,你可以通过内置的聊天工具留下评论并交换文本信息,留下评论可以访问查询,根据思路商讨确定方案。...结语;以上就是我给大家带来的ONLYOFFICE可提升办公效率的有效方法,其实一个好的工具能给自己带来的不仅仅是工作上的便利, 更重要的是一个良好的线上工作环境,和愉悦的工作状态与心情。
IntelliJ IDEA has support for ECJ, as of GNU Compiler for Java (GCJ) 4.3, GCJ integrates with ECJ, Liferay...后面一句话解释了我的疑问:Apache Tomcat uses ECJ to compile JSPs (Tomcat用ECJ来编译JSPs)。...另一个不同在于Eclipse编译器允许在Eclipse IDE中增量构建,也就是说,所有代码在键入之后立即编译。...事实上Eclipse明显自带了编译器,因为在Eclipse中编写,编译,运行Java代码都不需要安装Java SDK。...GCJ包含了ECJ Liferay用ECJ构建。
因为我发现他们资产太大了发现他们的一级域名也是挺多的。...在modules里面存放了主要获取数据的脚本代码,不得不说太强了!...接着我在opt 目录下找到了他备份 ftp 的shell文件,打开一看了里面具有一些密码,这个可以收集起来! ?...这一步需要把上一步获取到的低权限的token添加到cookie中,将xmlns="urn:zimbraAccount"修改为 xmlns="urn:zimbraAdmin",并且需要在Host头中加入端口...Liferay 框架RCE漏洞 Liferay 框架2020年3月份爆出了Liferay Portal JSON Web 服务器的RCE漏洞,使用nmap对其操作系统进行扫描判断,然后对执行命令的方式进行修改
Portlet 在早几年的企业门户应用中很常见,它本身是一组规范,也规定了一种聚合页面的方式,可以远程聚合,也可以本地聚合,它可以协助应用将数据实体和展现模板在组网上就分离开,业务节点部署可以非常灵活,...它定义了 portlet 和 portlet 容器之间的合约,让 portlet 实现个性化、表示和安全的 api 集。规范还定义了怎样在 portlets 应用中打包 portlets。...(web service for remote portlet)协议运行符合 jsr168 规范的远程 portlet 将复杂的页面代码交给程序开发人员进行处理,以降低网页设计的难度 假设我是一个...intranet 网站的管理员,我的公司买了一个能显示新闻信息的第三方 portlet 应用,该应用允许用户指定跟踪新 闻更新的 URL 地址,我想借助它为用户显示公司的内部新闻。...作为管理员,我可以为所有 的用户指定一个用于内部新闻更新的 URL 地址,同时通过改变 portlet 应用的部署描述符来取消其它人修改该地址的权限。
(HttpServletRequest request, HttpServletResponse response) throws Exception; } 在自定义控制器前先创建一个基于maven的web...包冲突、scope要设置为provided,由容器提供,不会发布(或者不配这两个依赖,在项目的Java BuildPath的Libraries里添加Server Runtime)目前scope可以使用5...message,值为一段字符串 return new ModelAndView("foo/index", "message", "Hello,我是通过实现接口定义的一个控制器");.../foo" class="com.zhangguo.springmvc02.controllers.FooController"> 基中name是访问路径,class是自定义的控制器的全名称...* Ant风格的路径模式,同时也支持(例如,“/myPath/*.do”)。在方法层面,在主要的映射在类型级别表示相对路径(例如,“edit.do”) * 的支持。
Spring Boot对自定义十分友好,可以配置在application.yml或者Config类,Spring Boot的整体思想是有自定义的话,自定义优先,否则走默认配置。...\Users\Administrator\.m2\repository的仓库地址,改成我们自定义的盘下面即可。...之前用过Liferay技术, Liferay通过ServiceBuilder生成Service.xml,在这个Service.xml配置你需要创建数据库表的entity信息,然后定义一些方法的字段。...如果需要定制化sql语句,只需要在finderImpl和ServiceImpl里面添加自己的方法,然后build一下,重新生成接口。...需要定制化CRUD,我们添加相应的方法就行了。
可以通过使用自定义的bean post-processor来让Spring释放掉原型Bean所持有的资源。...此服务只会检查添加到购物车的产品是否库存。...但请记住,你无法在Web应用程序上下文中使用它们(说个好理解点的,就是一个函数内部自定义变量所在的作用域,函数执行完就销毁了,没有什么逃逸)。...5. global session 该部分主要是描述portlet的,详情可以Google更多关于portlet的相关信息。...它们基于portlet容器,可以像servlet一样处理HTTP请求。但是,与servlet不同,每个portlet都有不同的会话。
领取专属 10元无门槛券
手把手带您无忧上云