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……大概是写属性写的太多,写顺手了……