如何预防Liferay';s<;aui:表格>;使用Javascript提交表单?

如何预防Liferay';s<;aui:表格>;使用Javascript提交表单?,java,jsp,liferay,liferay-6,liferay-7,Java,Jsp,Liferay,Liferay 6,Liferay 7,我有一个非常传统的项目,我们使用一些基于Java的门户/引擎,名为Liferay。 在一个.jsp文件中,我有一个表单(缺少逻辑和非相关代码,但表单、提交逻辑和处理程序存在): 正如您在评论中看到的,我们的想法是,当出现validationErrors时,不要提交表单。然而,这是行不通的 请记住,在简单地向我提出其他问题之前,我已经看到了其中的大部分。是的,他们有一些答案可能是给那些知道这个特定领域的人的-Liferay。但对我来说,这有点棘手 我故意省略了这里的所有样板文件,只留下了可归因于问

我有一个非常传统的项目,我们使用一些基于Java的门户/引擎,名为Liferay。

在一个
.jsp
文件中,我有一个表单(缺少逻辑和非相关代码,但表单、提交逻辑和处理程序存在):

正如您在评论中看到的,我们的想法是,当出现
validationErrors
时,不要提交表单。然而,这是行不通的

请记住,在简单地向我提出其他问题之前,我已经看到了其中的大部分。是的,他们有一些答案可能是给那些知道这个特定领域的人的-Liferay。但对我来说,这有点棘手

我故意省略了这里的所有样板文件,只留下了可归因于问题的代码

也许你能给我一个清晰的想法和建议如何解决这个问题


谢谢大家!

如果您参考下面的url,您可以添加call submitForm方法来提交表单

在脚本中,您可以引用“submitForm(form)”


var form=document.getElementById(“”);
如有需要(表格){
form.addEventListener(
“提交”,
功能(事件){
var redirect=form.querySelector(“#redirect”);
如果(重定向){
var redirectVal=redirect.getAttribute('value');
redirect.setAttribute('value',redirectVal+window.location.hash);
}
**提交表格(表格)**
}
);

既然代码使用了aui:form,我们可以假设它也使用了aui:field标记吗?是这样吗,有什么原因不能使用内置的验证功能吗

它们处理细节,并提供UI,以与Liferay一致的方式通知用户验证失败


我知道这是个老问题。试试这个:
<aui:form action="/someURL" method="post" name="fm" enctype="multipart/form-data">
    <aui:fieldset >
        //Some code..
        <aui:button onClick="someJSandLiferayMethod();" type="submit" value='someNameHere' />
    </aui:fieldset>
</aui:form>
<script type="text/javascript">
    AUI().use(
        'aui-tooltip', 'aui-base', 'selector-css3',
        function (A) {
            var form = A.one('#<portlet:namespace />fm');

            if (form) {
                form.on(
                    'submit',
                    function(event) {
                        //Some code here.. where validationErrors is either getting an object or not.
                        //Ultimate aim is to check validationErrors and depending on whether it has something or not, act accordingly. Namely:
                        //Do NOT submit the form if there are errors, and do otherwise.

                        if (validationErrors) {
                            event.halt();
                            event.stopImmediatePropagation();
                        }
                    }
                );
            }
        });
</script>
    <aui:script sandbox="<%= true %>">
        var form = document.getElementById('<portlet:namespace /><%= formName %>');

        if (form) {
            form.addEventListener(
                'submit',
                function(event) {
                    <c:if test="<%= Validator.isNotNull(redirect) %>">
                        var redirect = form.querySelector('#<portlet:namespace />redirect');

                        if (redirect) {
                            var redirectVal = redirect.getAttribute('value');

                            redirect.setAttribute('value', redirectVal + window.location.hash);
                        }
                    </c:if>

                    **submitForm(form);**
                }
            );