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……大概是写属性写的太多,写顺手了……
分享到:
相关推荐
2022-01-2918:24:51:360[ContextProxy]107662:ignore:java.lang.RuntimeException:java.lang.NoSuchMethodException:[] ``` - **时间戳**: `2022-01-2918:24:51:360` 表示该异常发生的时间。 - **线程**: `...
- **通过字符串类名**:使用`Class.forName(String name)`,如`Class.forName("java.lang.String")`。 ```java // 已知类名 Class<?> myClass = MyClass.class; // 通过字符串类名 Class<?> myClass2; try { ...
- **数组操作**:数组初始化与元素初始化的区别易被忽略。即使数组本身已经初始化,但其元素依然为默认值(如 `null` 对于对象类型的数组)。若尝试访问这些未初始化的元素,则会抛出此异常。 **解决策略:** - 在...
首先,要使用反射API,我们需要导入`java.lang.reflect`包中的几个关键类:`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类对象、构造器对象、方法对象和字段对象。 1. **获取类对象**: 要使用反射...
- **异常类的位置**:所有异常类都定义在`java.lang`包中。 - **层次结构**:异常的根类是`Throwable`,它继承自`Object`类。`Throwable`有两个主要的子类: - `Exception`:表示程序可以通过捕获来处理的异常。 -...