2013-03-25 69 views
0

我想使用Liferay的验证码为我的项目,这里是代码:Liferay的验证码JSF 2不工作

这里是我的代码: CaptchaBean.java:

package com.verisign.pds.sample; 

import java.io.Serializable; 

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.context.FacesContext; 
import javax.faces.event.ActionEvent; 

import com.liferay.portal.kernel.util.GetterUtil; 
import com.liferay.portal.kernel.util.PropsKeys; 
import com.liferay.portal.kernel.util.PropsUtil; 

@ManagedBean 
public class CaptchaBean implements Serializable 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -7115962680931544850L; 
    /** 
    * 
    */ 
    private String captchaText; 
    private Boolean captchaRendered; 

    public void submit(ActionEvent event) 
    { 
     FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Correct", "Correct"); 

     FacesContext.getCurrentInstance().addMessage(null, msg); 

    } 

    public boolean isCaptchaRendered() 
    { 
     if (getCaptchaRendered() == null) 
     { 
      setCaptchaRendered(Boolean.valueOf(GetterUtil.getBoolean(PropsUtil.get(PropsKeys.CAPTCHA_CHECK_PORTAL_CREATE_ACCOUNT)))); 
     } 

     return getCaptchaRendered().booleanValue(); 
    } 

    public String getCaptchaText() 
    { 
     return captchaText; 
    } 

    public void setCaptchaText(String captchaText) 
    { 
     this.captchaText = captchaText; 
    } 

    public Boolean getCaptchaRendered() 
    { 
     return captchaRendered; 
    } 

    public void setCaptchaRendered(Boolean captchaRendered) 
    { 
     this.captchaRendered = captchaRendered; 
    } 
} 

captcha.xhtml:

<?xml version="1.0" encoding="UTF-8"?> 
<f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:aui="http://liferay.com/faces/aui" xmlns:aui-cc="http://liferay.com/faces/aui-cc" 
    xmlns:liferay-ui="http://liferay.com/faces/ui" xmlns:liferay-util="http://liferay.com/faces/util"> 


    <h:head> 
    </h:head> 
    <h:form> 
     <h:body> 
      <aui:form id="f"> 
       <aui:layout> 
        <h:messages showDetail="true" /> 

        <liferay-ui:captcha rendered="#{captchaBean.captchaRendered}" /> 
        <aui-cc:input inlineMessage="true" label="Please Fill in the Blank" value="#{captchaBean.captchaText}" 
         required="true"> 
         <liferay-util:validateCaptcha for="inputText" /> 
        </aui-cc:input> 
        <h:commandButton actionListener="#{captchaBean.submit}" styleClass="aui-button-input aui-button-input-submit" 
         value="Submit" /> 
       </aui:layout> 
      </aui:form> 
     </h:body> 
    </h:form> 
</f:view> 

我下面的链接:

Liferay JSF 2 Captcha Example

这里有我的类路径罐子的列表:

1<include name="**/portlet-api-2.0.jar" /> 
2<include name="**/portlet-bridge-api-2.0.0.jar" /> 
3<include name="**/liferay-faces-bridge-api-3.1.1-ga2.jar" /> 
4<include name="**/liferay-faces-bridge-impl-3.1.0-RC1.jar" /> 
5<include name="**/liferay-faces-util-3.1.1-ga2.jar" /> 
6<include name="**/liferay-faces-alloy-3.1.1-ga2.jar" /> 
7<include name="**/jsf-api-2.1.9.jar" /> 
8<include name="**/jsf-impl-2.1.9.jar" /> 

请让我知道我在做什么错在这里。我正在使用JSF 2.0和Liferay 6.1.10。这里是错误:

SEVERE: Error Rendering View[/WEB-INF/xhtml/prototype/wizard/captcha.xhtml] 
java.io.NotSerializableException: com.liferay.faces.bridge.container.liferay.PortletContainerLiferayImpl 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
    at java.util.ArrayList.writeObject(ArrayList.java:570) 
    at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:940) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) 
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
    at java.util.HashMap.writeObject(HashMap.java:1001) 
    at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:940) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
    at com.sun.faces.renderkit.ClientSideStateHelper.doWriteState(ClientSideStateHelper.java:338) 
    at com.sun.faces.renderkit.ClientSideStateHelper.writeState(ClientSideStateHelper.java:181) 
    at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) 
    at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:113) 
    at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:441) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    at com.liferay.faces.bridge.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:91) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    at com.liferay.faces.bridge.lifecycle.LifecycleWrapper.render(LifecycleWrapper.java:45) 
    at com.liferay.faces.bridge.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:241) 
    at com.liferay.faces.bridge.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:84) 
    at com.liferay.faces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:82) 
    at javax.portlet.faces.GenericFacesPortlet.doView(GenericFacesPortlet.java:255) 
    at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328) 
    at javax.portlet.faces.GenericFacesPortlet.doDispatch(GenericFacesPortlet.java:204) 
    at javax.portlet.GenericPortlet.render(GenericPortlet.java:233) 
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100) 
    at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64) 
    at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:93) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:71) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524) 
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444) 
    at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:637) 
    at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:722) 
    at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:426) 
    at jsp_servlet._html._portal.__render_portlet._jspService(__render_portlet.java:1244) 
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    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:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:71) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524) 
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:444) 
    at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:4984) 
    at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:4943) 
    at com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:1496) 
    at com.liferay.portal.action.RenderPortletAction.execute(RenderPortletAction.java:86) 
    at com.liferay.portal.action.UpdateLayoutAction.addPortlet(UpdateLayoutAction.java:334) 
    at com.liferay.portal.action.UpdateLayoutAction.getJSON(UpdateLayoutAction.java:287) 
    at com.liferay.portal.struts.JSONAction.execute(JSONAction.java:60) 
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 
    at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:174) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:538) 
    at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:515) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    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:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158) 
    at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:304) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158) 
    at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:289) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158) 
    at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:83) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158) 
    at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:80) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:158) 
    at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:216) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:55) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:206) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:108) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:167) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:187) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:95) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:71) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178) 

回答

1

我会建议您尝试Liferay Faces jsf2-registration-portlet演示。它有一个适用于JSF/Facelets的liferay-ui:captcha组件的工作示例。