- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有用户名字段的表单,当我跳出该字段时,我使用 RESTFUL Web Service 来使对 Controller 中处理程序方法的调用。该方法调用一个 DAO 类来检查数据库中用户名是否存在。
这工作正常,但是当表单发布到服务器时,我调用与在处理程序方法中调用的完全相同的函数,但是当它访问该类时,我得到一个 java.lang.NullPointerException调用DAO对象。因此它甚至不会第二次访问DAO对象。
我在所有进行调用的类中都有围绕调用的异常处理程序。关于这里发生的事情的任何想法为什么我会在第二次调用该函数时得到 java.lang.NullPointerException 。这与 Spring 实例化 有什么关系吗? >DAO 类使用 Singleton 方法或类似的方法?可以采取什么措施来解决这个问题?
这是第一次使用 Web 服务调用该方法时发生的情况(这应该发生):
13011 [http-8084-2] INFO com.crimetrack.jdbc.JdbcOfficersDAO - Inside jdbcOfficersDAO
13031 [http-8084-2] DEBUG org.springframework.jdbc.core.JdbcTemplate - Executing prepared SQL query
13034 [http-8084-2] DEBUG org.springframework.jdbc.core.JdbcTemplate - Executing prepared SQL statement [SELECT userName FROM crimetrack.tblofficers WHERE userName = ?]
13071 [http-8084-2] DEBUG org.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
13496 [http-8084-2] DEBUG org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 1, parameter value [adminz], value class [java.lang.String], SQL type unknown
13534 [http-8084-2] DEBUG org.springframework.jdbc.datasource.DataSourceUtils - Returning JDBC Connection to DataSource
13537 [http-8084-2] INFO com.crimetrack.jdbc.JdbcOfficersDAO - No username was found in exception
13537 [http-8084-2] INFO com.crimetrack.service.ValidateUserNameManager - UserName :adminz does NOT exist
第二次当表单为“Post”并且验证方法处理表单并调用 Web 服务将调用的相同方法时:
17199 [http-8084-2] INFO com.crimetrack.service.OfficerRegistrationValidation - UserName is not null so going to check if its valid for :adminz
17199 [http-8084-2] INFO com.crimetrack.service.OfficerRegistrationValidation - User Name in try.....catch block is adminz
17199 [http-8084-2] INFO com.crimetrack.service.ValidateUserNameManager - Inside Do UserNameExist about to validate with username : adminz
17199 [http-8084-2] INFO com.crimetrack.service.ValidateUserNameManager - UserName :adminz EXCEPTION OCCURED java.lang.NullPointerException
ValidateUserNameManager.java
public class ValidateUserNameManager implements ValidateUserNameIFace {
private OfficersDAO officerDao;
private final Logger logger = Logger.getLogger(getClass());
public boolean DoesUserNameExist(String userName) throws Exception {
logger.info("Inside Do UserNameExist about to validate with username : " + userName);
try{
if(officerDao.OfficerExist(userName) == true){
logger.info("UserName :" + userName + " does exist");
return true;
}else{
logger.info("UserName :" + userName + " does NOT exist");
return false;
}
}catch(Exception e){
logger.info("UserName :" + userName + " EXCEPTION OCCURED " + e.toString());
return false;
}
}
/**
* @return the officerDao
*/
public OfficersDAO getOfficerDao() {
return officerDao;
}
/**
* @param officerdao the officerDao to set
*/
public void setOfficerDao(OfficersDAO officerDao) {
this.officerDao = officerDao;
}
}
JdbcOfficersDAO.java
public boolean OfficerExist(String userName){
String dbUserName;
try{
logger.info("Inside jdbcOfficersDAO");
String sql = "SELECT userName FROM crimetrack.tblofficers WHERE userName = ?";
try{
dbUserName = (String)getJdbcTemplate().queryForObject(sql, new Object[]{userName},String.class);
logger.info("Just Returned from database");
}catch(Exception e){
logger.info("No username was found in exception");
return false;
}
if(dbUserName == null){
logger.info("Database did not find any matching records");
}
logger.info("after JdbcTemplate");
if (dbUserName.equals(userName)) {
logger.info("User Name Exists");
return true;
}else{
logger.info("User Name Does NOT Exists");
return false;
}
}catch(Exception e){
logger.info("Exception Message in JdbcOfficersDAO is "+e.getMessage());
return false;
}
}
OfficerRegistrationValidation.java
public class OfficerRegistrationValidation implements Validator{
private final Logger logger = Logger.getLogger(getClass());
private ValidateUserNameManager validateUserNameManager;
public boolean supports(Class<?> clazz) {
return Officers.class.equals(clazz);
}
public void validate(Object target, Errors errors) {
Officers officer = (Officers) target;
if (officer.getUserName() == null){
errors.rejectValue("userName", "userName.required");
}else{
String userName = officer.getUserName();
logger.info("UserName is not null so going to check if its valid for :" + userName);
try {
logger.info("User Name in try.....catch block is " + userName);
if (validateUserNameManager.DoesUserNameExist(userName)== true){
errors.rejectValue("userName", "userName.exist");
}
} catch (Exception e) {
logger.info("Error Occured When validating UserName");
errors.rejectValue("userName", "userName.error");
}
}
if(officer.getPassword()== null){
errors.rejectValue("password", "password.required");
}
if(officer.getPassword2()== null){
errors.rejectValue("password2", "password2.required");
}
if(officer.getfName() == null){
errors.rejectValue("fName","fName.required");
}
if(officer.getlName() == null){
errors.rejectValue("lName", "lName.required");
}
if (officer.getoName() == null){
errors.rejectValue("oName", "oName.required");
}
if (officer.getEmailAdd() == null){
errors.rejectValue("emailAdd", "emailAdd.required");
}
if (officer.getDob() == null){
errors.rejectValue("dob", "dob.required");
}
if (officer.getGenderId().equals("A")){
errors.rejectValue("genderId","genderId.required");
}
if(officer.getDivisionNo() == 1){
errors.rejectValue("divisionNo", "divisionNo.required");
}
if(officer.getPositionId() == 1){
errors.rejectValue("positionId", "positionId.required");
}
if (officer.getStartDate() == null){
errors.rejectValue("startDate","startDate.required");
}
if(officer.getEndDate() == null){
errors.rejectValue("endDate","endDate.required");
}
logger.info("The Gender ID is " + officer.getGenderId().toString());
if(officer.getPhoneNo() == null){
errors.rejectValue("phoneNo", "phoneNo.required");
}
}
/**
* @return the validateUserNameManager
*/
public ValidateUserNameManager getValidateUserNameManager() {
return validateUserNameManager;
}
/**
* @param validateUserNameManager the validateUserNameManager to set
*/
public void setValidateUserNameManager(
ValidateUserNameManager validateUserNameManager) {
this.validateUserNameManager = validateUserNameManager;
}
}
使用 Logger.Error("Message", e) 更新错误日志:
39024 [http-8084-2] INFO com.crimetrack.service.OfficerRegistrationValidation - UserName is not null so going to check if its valid for :adminz
39025 [http-8084-2] INFO com.crimetrack.service.OfficerRegistrationValidation - User Name in try.....catch block is adminz
39025 [http-8084-2] ERROR com.crimetrack.service.OfficerRegistrationValidation - Message
java.lang.NullPointerException
at com.crimetrack.service.OfficerRegistrationValidation.validate(OfficerRegistrationValidation.java:47)
at org.springframework.validation.DataBinder.validate(DataBinder.java:725)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:815)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:367)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
39025 [http-8084-2] INFO com.crimetrack.service.OfficerRegistrationValidation - Error Occured When validating UserName
已更新
ApplicationContext.xml
<beans>
<!-- __________________________________________________________________________________________________ -->
<bean id="officerRegistrationValidation" class="com.crimetrack.service.OfficerRegistrationValidation">
<property name="validateUserNameManager" ref="validateUserNameManager"/>
</bean>
<bean id="validateUserNameManager" class="com.crimetrack.service.ValidateUserNameManager">
<property name="officerDao" ref="officerDao"/>
</bean>
<bean id="officerDao" class="com.crimetrack.jdbc.JdbcOfficersDAO" >
<property name="dataSource" ref="dataSource" />
</bean>
<!-- __________________________________________________________________________________________________ -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- __________________________________________________________________________________________________ -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
<!-- __________________________________________________________________________________________________ -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
Servlet.xml
<beans>
<!-- __________________________________________________________________________________________________ -->
<bean name="/hello.htm" class="com.crimetrack.web.CountryListController">
<property name="countryManager" ref="countryManager"/>
</bean>
<bean name="/login.htm" class="com.crimetrack.web.AuthenticationController">
<property name="authenticationManager" ref="authenticationManager"/>
</bean>
<bean name="/officer_registration.htm" class="com.crimetrack.web.OfficerRegistrationController">
<property name="divisionManager" ref="divisionManager" />
<property name="positionManager" ref="positionManager" />
<property name="genderManager" ref="genderManager"/>
</bean>
<!-- __________________________________________________________________________________________________ -->
<bean name="/validateUserName.htm" class="com.crimetrack.web.OfficerRegistrationController">
<property name="validateUserNameManager" ref="validateUserNameManager"/>
</bean>
<!-- __________________________________________________________________________________________________ -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
最佳答案
我认为您忘记 Autowiring ValidateUserNameManager.java 中的 officerDao
字段
尝试添加@Autowire
:
@Autowire
private OfficersDAO officerDao;
更新:
更新堆栈跟踪后,我认为是 OfficeRegistrationValidation.java 中的 validateUserNameManager
字段未 Autowiring 。然而,这取决于OfficerRegistrationValidation.java中第47行的内容
关于java - 将表单发布到服务器时 SpringMvc java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12558476/
在 Tomcat 6/Ubuntu 12.04 上启动 Grails 2.1.0 应用程序时出现以下错误。 Error 500 - Internal Server Error. groovy.lang
在运行 Storm 拓扑时,我收到此错误。拓扑完美运行 5 分钟,没有任何错误,然后失败。我正在使用 Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS as 300 sec i
我有一个 jsp 代码在其中一台机器上运行良好。但是当我复制到另一台机器时,我得到了这个 no such method found 异常。我是 Spring 的新手。有人可以解释我错过了什么吗? 以下
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我的代码在下面给出了一个错误; Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(L
我正在尝试一个 Restful web 服务示例,所以当我要访问 url 时,我遇到了异常 java.lang.NoSuchMethodError: jersey.repackaged.com.goo
我正在将一个 Spring web 项目转换为一个 Maven 项目,但我收到了这个错误: java.lang.NoSuchMethodError: org.jboss.logging.Logger.
在我的项目中,我有一个像这样的枚举: public enum MyEnum { FIRST(1), SECOND(2); private int value; private MyEnum(int v
我创建了这个简单的示例,用于读取 Linux 正常运行时间: public String getMachineUptime() throws IOException { String[] di
我正在使用 Eclipse,并且正在使用 Java。我的目标是使用 bogoSort 方法对 vector 进行排序在一个 vector (vectorExample)中适应我的 vector 类型,
我正在运行以下查询。它显示一条错误消息。如何解决这个错误? ListrouteList=null; List companyList = session.createS
我有以下模型类: @Entity @Table(name="user_content") @org.hibernate.annotations.NamedQueries({ @org.
我有那个错误。这是我的代码: GmailSettingsService service = new GmailSettingsService(APPLICATION_NAME, DOMAIN_NAME
实际上我在执行我的java程序时遇到了下面提到的错误 Exception in thread "pool-1-thread-1" java.lang.ClassCastException: jav
java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.String 我在以下代码中遇到此异常: Strin
我正在尝试从 linkedhashset 中检索随机元素。下面是我的代码,但它每次都给我异常。 private static void generateRandomUserId(Set userIds
我已经完成了 Android 中的代码: List spinnerArray = new ArrayList(); for (int i = 0; i item = (LinkedTreeMap)
这个问题已经有答案了: Explanation of ClassCastException in Java (12 个回答) 已关闭 6 年前。 我已经编写了 java 到 Json 的代码,同时从页
这个问题在这里已经有了答案: ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn (4 个答案) 关闭 6 年前
我在运行时遇到问题来编译这段代码,这给我一个错误,java.lang.Integer 无法转换为 Java.lang.Double。如果有人帮助我更正此代码,我将非常高兴 double x; pu
我是一名优秀的程序员,十分优秀!