java - 在 Liferay 6.1 的 User_ 表中创建注册页面以创建用户帐户时出错?

标签 java jsp web liferay portlet

我在 Liferay 6.1 中创建注册 portlet 并将用户帐户存储在数据库的默认 User_ 表中时遇到问题。

我正在使用默认的Liferay类UserLocalServiceUtil及其方法UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword,password1,password2,autoScreenName,screenName,emailAddress,facebookId,openId,locale,firstName 、middleName、lastName、prefixId、suffixId、male、birthdayMonth、birthdayDay、birthdayYear、jobTitle、groupIds、organizationIds、roleIds、userGroupIds、sendEmail、serviceContext);

我遇到这个错误:

java.lang.NullPointerException
    at com.liferay.portal.security.pwd.PwdToolkitUtil.validate(PwdToolkitUtil.java:40)
    at com.liferay.portal.service.impl.UserLocalServiceImpl.validate(UserLocalServiceImpl.java:5405)
    at com.liferay.portal.service.impl.UserLocalServiceImpl.addUserWithWorkflow(UserLocalServiceImpl.java:592)
    at com.liferay.portal.service.impl.UserLocalServiceImpl.addUser(UserLocalServiceImpl.java:463)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:112)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:71)
    at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:108)
    at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:59)
    at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:108)
    at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:59)
    at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:108)
    at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:211)
    at $Proxy96.addUser(Unknown Source)
    at com.liferay.portal.service.UserLocalServiceUtil.addUser(UserLocalServiceUtil.java:445)
    at org.apache.jsp.register_jsp._jspService(register_jsp.java:123)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:113)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
    at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:316)
    at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:105)
    at com.liferay.util.bridges.mvc.MVCPortlet.include(MVCPortlet.java:366)
    at com.liferay.util.bridges.mvc.MVCPortlet.include(MVCPortlet.java:382)
    at com.liferay.util.bridges.mvc.MVCPortlet.doDispatch(MVCPortlet.java:315)
    at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
...

最佳答案

看起来您正在尝试直接从 jsp 从 portlet 的呈现状态调用此方法 - 您应该在呈现之前从操作状态执行此操作。在渲染期间,您不应该更改任何状态。

阅读有关 portlet 生命周期的信息,其中对此进行了更详细的解释。简而言之:如果您习惯于在 servlet 中使用 jsps 执行所有操作,则必须重新学习 portlet:操作和渲染是完全分开的状态。通常,Portlet 呈现的频率比实际处理操作的频率要高得多(因为一页上可以有许多不同的 Portlet,因此只有一个 Portlet 可以处理某个操作,而所有 Portlet 都可以显示/呈现。

关于java - 在 Liferay 6.1 的 User_ 表中创建注册页面以创建用户帐户时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12249198/

相关文章:

java - 在 tomcat 上配置 SSL

java - 显示为 XX :ParallelGCThreads 选择的默认值

java - Android:使用资源初始化消息时 ProgressDialog 崩溃

java - 是否有在 JSP 上显示数据库更改的最佳实践

php - 在 PHP 中为什么它只回显最后一项而且我知道在数组中它不止一个

javascript - 网站youtube内嵌视频一直在播放

java - 为什么 java nio2 不能监听 udp 端口​​?

css - 在 JSP 中围绕 2 个按钮创建简单的线条边框

java - JSP 比较运算符行为

通过脚本的 HTML 音频控制