嘿,我的朋友我有我的代码,他没有工作的一些问题我认为这个问题在我的类UserService,不能确定,请帮助我,当我运行我的程序我的控制台网站公告:Struts2和Java:我有问题与我的功能Java他没有与数据库(MySQL)
踪迹
java.lang.NullPointerException
com.web.actions.UtlisateurAction.listUsers(UtlisateurAction.java:67)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:100)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:
struts.devMode=false
in your WEB-INF/classes/struts.properties file.
UtlisateurAction.java
package com.web.actions;
import java.util.List;
import com.app.business.bo.security.Role;
import com.app.business.bo.security.Utlisateur;
import com.app.business.services.UtlisateurService;
import com.app.exceptions.DuplicateLoginException;
import com.web.BaseAction;
public class UtlisateurAction extends BaseAction {
private UtlisateurService userService;
private List<Utlisateur> listUsers;
private Utlisateur utilisateur;
private List<Role> listRoles;
private Long selectedRole;
public String passage(){
System.out.println("Passage");
return SUCCESS;
}
public String showMenu(){
System.out.println("User Access");
return SUCCESS;
}
public String initFormAddUser() {
listRoles = userService.getAllRoles();
return SUCCESS;
}
public String addUser() {
try {
utilisateur.setRole(userService.getRoleById(selectedRole));
userService.addUtilisateur(utilisateur);
} catch (DuplicateLoginException ex) {
addActionError("Operation non effectuee a cause d'une erreur");
ex.printStackTrace();
return "error";
} catch (Exception ex) {
addActionError("Operation non effectuee à cause d'une erreur");
ex.printStackTrace();
return "error";
}
// on affiche une page d'erreur
addActionMessage("Utilisateur ajoutée avec succées");
return SUCCESS;
}
public String listUsers() {
System.out.println("On train de detecter");
listUsers = userService.getAllUsers();
System.out.println("GET ALL USERS");
return SUCCESS;
}
public List<Utlisateur> getListUsers() {
return listUsers;
}
public void setListUsers(List<Utlisateur> listUsers) {
this.listUsers = listUsers;
}
public UtlisateurService getUserService() {
return userService;
}
public void setUserService(UtlisateurService userService) {
this.userService = userService;
}
public Utlisateur getUtilisateur() {
return utilisateur;
}
public void setUtilisateur(Utlisateur utilisateur) {
this.utilisateur = utilisateur;
}
public List<Role> getListRoles() {
return listRoles;
}
public void setListRoles(List<Role> listRoles) {
this.listRoles = listRoles;
}
public Long getSelectedRole() {
return selectedRole;
}
public void setSelectedRole(Long selectedRole) {
this.selectedRole = selectedRole;
}
}
UtlisateurServiceImpl.java
package com.services.impl;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.security.authentication.encoding.ShaPasswordEncoder;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import com.bo.security.Role;
import com.bo.security.Utilisateur;
import com.boudaa.dao.exceptions.EntityNotFoundException;
import com.dao.RoleDao;
import com.dao.UtilisateurDao;
import com.exceptions.DuplicateLoginException;
import com.services.UtilisateurService;
public class UtilisateurServiceImpl implements UtilisateurService, UserDetailsService {
private UtilisateurDao userDao;
private RoleDao roleDao;
protected final Log log = LogFactory.getLog(getClass());
public UserDetails loadUserByUsername(String pLogin) throws UsernameNotFoundException {
Utilisateur lUser = null;
Collection<GrantedAuthority> arrayAuths = new ArrayList<GrantedAuthority>();
// On récupère un objet de domaine de type User ayant comme login pLogin
try {
lUser = userDao.getUserByLogin(pLogin);
} catch (ObjectRetrievalFailureException ex) {
ex.printStackTrace();
// nous relançons une UsernameNotFoundException si aucun utilisateur
// ne correspond à cet login
log.debug("Erreur d'authentification avec le login : " + pLogin);
throw new UsernameNotFoundException("User " + pLogin + " not exists", ex);
}
// Si un utilisateur correspond à cet identifiant, nous en profitons
// pour mettre à jour sa date de dernière connexion
lUser.setLastAccessDate(Calendar.getInstance().getTime());
userDao.update(lUser);
// Il faut ensuite récupérer les rôles de l’utilisateur et les
// mettre
// sous la forme de SimpleGrantedAuthority, une interface propre Ã
// Spring
// Security*
Role role = lUser.getRole();
arrayAuths.add(new SimpleGrantedAuthority(role.getRoleName()));
// /un User (classe Spring Security) est créé
System.out.println("oui");
return new User(pLogin, lUser.getPassword(), lUser.isEnabled(), lUser.isAccountNotExpired(), true,
lUser.isAccountNotLocked(), arrayAuths);
}
public Utilisateur getUserByLogin(String pLogin) throws EntityNotFoundException {
List<Utilisateur> users;
try {
users = userDao.getEntityByColumn("Utilisateur", "login", pLogin);
} catch (ObjectRetrievalFailureException ex) {
throw new EntityNotFoundException("Aucun utilisateur avec le login : " + pLogin);
}
if (users.size() != 1) {
// TODO : Ecrire le code pour ajouter des log fatal
// TODO : ecrire le code envoyant un mail d'erreur fatal Ã
// l'administrateur
throw new RuntimeException("Erreur inconnue dans le systeme");
}
return users.get(0);
}
public void addUtilisateur(Utilisateur user) throws DuplicateLoginException {
// pour hacher avec SHA1
ShaPasswordEncoder encoder = new ShaPasswordEncoder();
// Hachage du mot de passe avec un gain de sel variable = login
String cryptedPassword = encoder.encodePassword(user.getPassword(),
user.getLogin());
// affecter le mot de passe haché
user.setPassword(cryptedPassword);
// stockage de l'utilisateur dans la base de données
try {
userDao.create(user);
} catch (DataIntegrityViolationException ex) {
log.error("erreur d'ajout d'un utilisateur à cause de l'exception " + ex
+ " . un utilisateur avec le login " + user.getLogin() + " existe déjà dans la base de données");
throw new DuplicateLoginException("Erreur d'inscription, login existe déjà ", ex);
}
}
public Role getRoleByName(String roleName) {
return roleDao.getRoleByName(roleName);
}
public Role getRoleById(Long pRoleId) throws EntityNotFoundException {
return roleDao.findById(pRoleId);
}
public List<Utilisateur> getAllUsers() {
return userDao.getAll();
}
public List<Role> getAllRoles() {
return roleDao.getAll();
}
public void deleteUser(Utilisateur u) throws EntityNotFoundException {
userDao.delete(u.getIdUtilisateur());
}
public UtilisateurDao getUserDao() {
return userDao;
}
public void setUserDao(UtilisateurDao userDao) {
this.userDao = userDao;
}
public RoleDao getRoleDao() {
return roleDao;
}
public void setRoleDao(RoleDao roleDao) {
this.roleDao = roleDao;
}
}
您是否曾将“userService”设置为任何内容?在我看来,当你尝试在'listUsers'中使用它时,它可能仍然是'null'。 –
在'UtlisateurAction'类中,可以用下面的代码片段替换'listUsers()'方法并尝试吗? 'public String listUsers(){ System.out.println(“On train de detecter”); listUsers = new UtlisateurService()。getAllUsers(); System.out.println(“GET ALL USERS”); return SUCCESS; }' – harshavmb
谢谢,但我在春天工作,他管理实例 – malkimou