`

java.lang.NoSuchMethodException:最易忽略的地方

阅读更多

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

分享到:
评论

相关推荐

    appstore_log.txt

    2022-01-2918:24:51:360[ContextProxy]107662:ignore:java.lang.RuntimeException:java.lang.NoSuchMethodException:[] ``` - **时间戳**: `2022-01-2918:24:51:360` 表示该异常发生的时间。 - **线程**: `...

    Java编程的动态性

    - **通过字符串类名**:使用`Class.forName(String name)`,如`Class.forName("java.lang.String")`。 ```java // 已知类名 Class&lt;?&gt; myClass = MyClass.class; // 通过字符串类名 Class&lt;?&gt; myClass2; try { ...

    java中常用的异常类型.docx

    - **数组操作**:数组初始化与元素初始化的区别易被忽略。即使数组本身已经初始化,但其元素依然为默认值(如 `null` 对于对象类型的数组)。若尝试访问这些未初始化的元素,则会抛出此异常。 **解决策略:** - 在...

    在Java中使用反射API的一个实例

    首先,要使用反射API,我们需要导入`java.lang.reflect`包中的几个关键类:`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类对象、构造器对象、方法对象和字段对象。 1. **获取类对象**: 要使用反射...

    Java软件设计基础-java异常处理.pdf

    - **异常类的位置**:所有异常类都定义在`java.lang`包中。 - **层次结构**:异常的根类是`Throwable`,它继承自`Object`类。`Throwable`有两个主要的子类: - `Exception`:表示程序可以通过捕获来处理的异常。 -...

Global site tag (gtag.js) - Google Analytics