如何将<sj:submit>
的目标设置为顶部。
作为示例登录页面应该在ajax基础验证结束后打开:
<s:form id="loginForm" action="login-process-result" namespace="/security" >
<sj:submit button="true"
validateFunction="formValidator" validate="true" key="form.btn.login />
</s:form>
我尝试了sj:submit targets
和s:form target
,没有一个工作过!
我不想使用s:submit
,因为表单验证必须通过Ajax完成。
答案 0 :(得分:2)
将其放在表单上,而不是提交标记:
<s:form action = "login-process-result"
namespace = "/security"
id = "loginForm"
target = "_top" >
但你确定这是你想要的吗? Take a look at how target="_top"
works。
根据你的描述,我不这么认为。
答案 1 :(得分:0)
要遵循struts2 jquery ajax validation
和target
的概念,我使用了以下解决方案:
login-form.jsp(未设置目标):
<s:form id="loginForm" action="login-process-result" namespace="/security" >
<sj:submit button="true"
validateFunction="formValidator" validate="true" key="form.btn.login />
</s:form>
行动(带有验证)
@Action(value = "login-process-result")
@Validations(requiredStrings={
@RequiredStringValidator(fieldName="userID",key="validate.required"),
@RequiredStringValidator(fieldName="password",key="validate.required")} )
public String result() throws ClientException{
//Authentication login goes here
return SUCCESS;
}
最后这个技巧的结果形式是一个普通的jsp,通过javascript更改窗口位置
页面显示成功消息,并在更改网址之前稍微延迟,这是可选的,可以删除。
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
You have logged in successfully ....
<br/>
<img src="images/loggin-in-progress.gif" />
<s:url var="url" action="private-page" namespace="/"/>
<script type="text/javascript">
function reload() {
window.location.href = "${url}";
}
$(document).ready(function() {
setTimeout('reload()', 800);
});
</script>