这个是struts.xml的配置<package name="user" namespace="/user" extends="struts-default">
<action name="user_*" class="wxm.web.action.UserAction"
method="{1}">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result name="register">/register.jsp</result>
<result name="login">/login.jsp</result>
<result name="invalid.token">/login.jsp</result>
</action>这个是javascipt的一部分$.ajax({
url:"user/user_checkName.action",
type:"POST",
data:"userName=" + loginName,
success:function (data, textStatus) {
alert(data);
if(data != ""){
$("#userNameexist").text("用户名已存在");
$('#userName').focus();
return;
}else
{
$("#userNameexist").text("");
}
}
});这个是UserAction.java的所有方法。public String checkName() {
boolean flag = true;
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
System.out.println(userName);
for (User user : userService.getAllUser()) {
if (userName.equals(user.getUserName())) {
flag = false;
}
}
if (!flag) {
writer.println("false");
}
} catch (IOException e) {
e.printStackTrace();
}
return "register";
}public String addUser() {
User user = new User(userName);
user.setPassword(password);
userService.addUser(user);
return "login";
}
问题来了,就是我的ajax请求的是user/user_checkName.action这个路径,但是他异步提交的时候不走进checkName()方法里,但是当我单独写一个Action来接收异步请求的时候却是能行得通的。请问高手怎么解决这个问题。是不是通配符的Action名不能作为URL? 那怎么办啊 一个ajax一个类吗,那会写死人的。求指教求指教~~~~
<action name="user_*" class="wxm.web.action.UserAction"
method="{1}">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result name="register">/register.jsp</result>
<result name="login">/login.jsp</result>
<result name="invalid.token">/login.jsp</result>
</action>这个是javascipt的一部分$.ajax({
url:"user/user_checkName.action",
type:"POST",
data:"userName=" + loginName,
success:function (data, textStatus) {
alert(data);
if(data != ""){
$("#userNameexist").text("用户名已存在");
$('#userName').focus();
return;
}else
{
$("#userNameexist").text("");
}
}
});这个是UserAction.java的所有方法。public String checkName() {
boolean flag = true;
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
System.out.println(userName);
for (User user : userService.getAllUser()) {
if (userName.equals(user.getUserName())) {
flag = false;
}
}
if (!flag) {
writer.println("false");
}
} catch (IOException e) {
e.printStackTrace();
}
return "register";
}public String addUser() {
User user = new User(userName);
user.setPassword(password);
userService.addUser(user);
return "login";
}
问题来了,就是我的ajax请求的是user/user_checkName.action这个路径,但是他异步提交的时候不走进checkName()方法里,但是当我单独写一个Action来接收异步请求的时候却是能行得通的。请问高手怎么解决这个问题。是不是通配符的Action名不能作为URL? 那怎么办啊 一个ajax一个类吗,那会写死人的。求指教求指教~~~~
struts配置文件中 多写一次这个Action然后checkName方法的返回值为null<action name="user_*" class="wxm.web.action.UserAction"
method="{1}">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result name="login">/login.jsp</result>
<result name="invalid.token">/login.jsp</result>
</action><action name="checkName" class="wxm.web.action.UserAction"
method="checkName" />
还有其他方法吗?让ajax认出user_xxx.action的方法~
method="checkName" />
url:"user/user_checkName",这个试试