使用内置在 Ajax 功能中的 jQuery 验证引擎,我从我的姓氏字段向我的 struts 操作类发送一个请求。
我的 HTML 代码是:
<script>
$(document).ready (function ()
{
$("#subform").validationEngine('attach', {
autoHidePrompt : true ,
autoHideDelay : 5000
});
});
</script>
<body>
<div class = "container">
<form id = "subform" action = "next" method = "post"> <br><br><br>
First Name: <input id = "txtfname" name = "txtfname" type = "text" class = "validate[required]"
placeholder = "enter emp name" />
Last name: <input id = "txtlname" name = "txtlname" type = "text" placeholder = "enter emp lname"
class = "validate[required, ajax[ajaxStrutsCall]]" />
Age: <input id = "txtage" name = "txtage" type = "text" placeholder = "enter age" />
<input id ="cmdsubmit" type = "submit" name = "cmdsubmit" value = "click here" />
</form>
</div>
</body>
ajax[ajaxStrutsCall] 引用 jquery.validationEngine-en.js 作为 struts 调用的 url。
jquery.validationEngine-en.js 是:
"ajaxStrutsCall": {
"url": "ajaxVal/LnameVal",
"alertTextOk": "Your last name seems ok",
"alertText": "Bad Last name",
"alertTextLoad": "Validating, please wait"
},
url 映射在我的 struts.xml 文件中,即:
<package name = "ajaxAction" namespace = "/ajaxVal" extends = "json-default">
<action name = "LnameVal" class = "validation.struts.AjaxStrutsAction" method = "execute">
<result name = "success" type = "json" />
</action>
</package>
最后我的 struts 动作类是:
public class AjaxStrutsAction extends ActionSupport implements ServletResponseAware, ServletRequestAware {
private HttpServletRequest request;
private HttpServletResponse response;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
@Override
public String execute() throws Exception {
Gson gson = new Gson ();
PrintWriter out = null;
String data = request.getParameter("txtlname");
System.out.println ("in struts class, got data from ajax query, lname is: " + data);
try {
Object [] ret = new Object [3];
ret[0] = "txtlname";
ret[1] = true;
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
out = response.getWriter();
out.write(gson.toJson(ret));
}catch (Exception e) {
System.out.println ("error " + e.getStackTrace() );
}finally {
out.flush();
out.close();
}
return "success";
}
}
现在,来自 struts 动作类的响应是正确的,那里没有问题,但是数据没有被发送到类,即request.getParameter ("txtlname")
返回 null,类不读取名称/请求发送的名称。