Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Liferay 7.2中的每个表单提交创建侦听器_Liferay_Liferay 7 - Fatal编程技术网

为Liferay 7.2中的每个表单提交创建侦听器

为Liferay 7.2中的每个表单提交创建侦听器,liferay,liferay-7,Liferay,Liferay 7,我想为门户中的每个表单提交创建一个侦听器 我创建了一个名为“测试表单”的表单,在liferay将信息保存到本地数据库之前(或之后),我希望将数据表单发送到外部API(并执行任何需要的操作)。 我试图通过做类似的事情来完成这项任务: import org.osgi.service.component.annotations.Component; import com.liferay.portal.kernel.exception.ModelListenerException; import co

我想为门户中的每个表单提交创建一个侦听器

我创建了一个名为“测试表单”的表单,在liferay将信息保存到本地数据库之前(或之后),我希望将数据表单发送到外部API(并执行任何需要的操作)。 我试图通过做类似的事情来完成这项任务:

import org.osgi.service.component.annotations.Component;

import com.liferay.portal.kernel.exception.ModelListenerException;
import com.liferay.portal.kernel.model.BaseModelListener;
import com.liferay.portal.kernel.model.Layout;
import com.liferay.portal.kernel.model.ModelListener;

@Component(immediate = true, service = ModelListener.class)
public class FormListener extends BaseModelListener<Layout> {

    @Override
    public void onBeforeCreate(Layout model) throws ModelListenerException {
        System.out.println(
            "About to create layout: " + model.getNameCurrentValue());

        model.setTitle("Title generated by model listener!");
    }
}
import org.osgi.service.component.annotations.component;
导入com.liferay.portal.kernel.exception.ModelListenerException;
导入com.liferay.portal.kernel.model.BaseModelListener;
导入com.liferay.portal.kernel.model.Layout;
导入com.liferay.portal.kernel.model.ModelListener;
@组件(immediate=true,service=modelstener.class)
公共类FormListener扩展了BaseModelListener{
@凌驾
public void onBeforeCreate(布局模型)引发ModelListenerException{
System.out.println(
即将创建布局:“+model.getNameCurrentValue());
setTitle(“由模型侦听器生成的标题!”);
}
}
但是为与每个表单提交相关的类更改布局——比如表单内容之类的。是否可以通过“onAfterSubmit”侦听器(或类似的东西)来完成此任务,或者有更好的解决方案


提前感谢。

如果您想在提交任何表单时执行某些操作,只需使用带有事件侦听器的脚本即可

创建Liferay主题:

在main.js文件(或任何您想要的地方)中放置一个javascript/jQuery/。。。表单提交上的事件侦听器,如下所示:

$('form').on('submit',function(){
    //do what you need...
}); 

PS


您编写的代码是Layout上的一个模型侦听器(即我们站点的页面,使用Liferay“语言”)。您发布的方法
onBeforeCreate
在创建新页面之前执行,因此每页执行一次。它与表单和提交无关。

你可以像Marco Mercuri向你展示的那样做前端,但后端ModelListener是你的朋友,所以你走对了方向。为此,您可能需要注意DDL记录。您可能需要ModelListener和MessageListener,因为数据可能不是实时可用的。作为一个例子,您可以在这里查看:

我想这将是您需要听的一段录音。没有验证它首先,你正在使用哪个表单应用程序?具有表单视图或新表单应用程序的DDL?由内容创建的表单。管理员用户将通过门户开发自己的表单,我的目标是——在门户中发布表单后——在所有表单中填写所有数据,并集成到其他应用程序中。类似于这个项目,在liferay平台中创建的所有用户都与CRM Yeap集成,在这种情况下,我宁愿使用后端策略。然而,我在这个问题上挣扎了好几天——而且已经在这个问题上挣扎了:(但未能成功。尝试了使用DDLRecord实体的这种方法,但甚至没有导入我能够导入的这个模型。我应该为此注入任何依赖项,还是应该在内核中作为Layour模型提供此依赖项?是的,这可能是一个可行的解决方案!但是使用jquery并在前端完成所有这些工作看起来不是最优雅的解决方案。