我想为门户中的每个表单提交创建一个侦听器。
我创建了一个称为“测试表单”的表单,在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!");
}
}
但是更改与每个表单提交有关的类的Layout-类似于FormContent之类。使用“ onAfterSubmit”监听器(或类似的东西)来完成此操作是否可行,或者有更好的解决方案?
提前感谢。
如果要在提交[[任何形式时执行某项操作,则可以仅将脚本与事件侦听器一起使用。
创建Liferay主题:Theme documentation在您的main.js文件中(或您想要的任何地方)将javascript / jQuery / ...事件监听器放在表单提交中,如下所示:
$('form').on('submit',function(){
//do what you need...
});
jQuery event listener documentationPS
您编写的代码是Layout上的Model Listener(这是我们网站使用Liferay“ language”编写的页面)。您发布的方法
onBeforeCreate
在创建新页面之前执行,因此每页一次。它与表单和提交无关。