action层
@Controller
@Scope("prototype")
@SuppressWarnings("serial")
public class UserAction extends CommonAction implements ModelDriven<MemoryUser>{
@Resource
private UserService userService;
private MemoryUser memoryUser=new MemoryUser();
//用户名是否重复的标识,“Y”标识重复,“N”标识不重复
private String isUserNameRepeat;
@Override
public MemoryUser getModel() {
return memoryUser;
}
public String getIsUserNameRepeat() {
return isUserNameRepeat;
}
public void setIsUserNameRepeat(String isUserNameRepeat) {
this.isUserNameRepeat = isUserNameRepeat;
}
/**
* @Description: 用户注册时检测用户名是否重复
* @author:
* @Date:
* @param:
* @return:
* @throws:
*/
private String checkUserName() throws Exception {
isUserNameRepeat="N";
System.out.println("执行++++++++++");
System.out.println(userService.checkUserName(getModel().getUserName()));
if(userService.checkUserName(getModel().getUserName())) {
isUserNameRepeat="Y";
}
return SUCCESS;
}
Service层
@Service
public class UserService {
@Resource
private UserDao userDao;
/**
* @Description: 用户注册时检测用户名是否重复
* @author:
* @Date:
* @param:用户输入的用户名
* @return:是否重复
* @throws:
*/
public Boolean checkUserName(String userName) throws Exception {
return userDao.checkUserName(userName);
}
}
Dao层
import javax.annotation.Resource;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.stereotype.Repository;
import cn.cd.model.MemoryUser;
@Repository
public class UserDao {
@Resource
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/**
* @Description: 用户注册时检测用户名是否重复
* @author:
* @Date:
* @param:用户输入的用户名
* @return:是否重复
* @throws:
*/
public Boolean checkUserName(String userName) throws Exception {
Boolean flag=false;
Session session=sessionFactory.openSession();
Transaction tx=null;
tx=session.beginTransaction();
MemoryUser memoryUser=(MemoryUser) session.get(MemoryUser.class, userName);
tx.commit();
if(null!=memoryUser) {
flag=true;
}
return flag;
}
}
Struts配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 与用户有关的action的配置 -->
<package name="memoryUser" extends="json-default" namespace="/memoryUser">
<!-- 验证用户名是否重复-->
<action name="checkUserName" class="cn.cd.action.UserAction" method="checkUserName">
<result name="success" type="json">
<param name="includeProperties">
isUserNameRepeat
</param>
<param name="noCache">true</param>
<param name="ignoreHierarchy">false</param>
</result>
</action>
</package>
</struts>
一直报上面的错误,找了好久发现配置都是对的,最后无意中发现Action中的checkUserName()居然是private……大概是写属性写的太多,写顺手了……