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