-
1. Re: Richfaces 3.1.5 + SUN-RI 1.1 error
jfcho Aug 13, 2008 2:39 PM (in response to jfcho)Here is the exact stackTrace
--------------------------------------------
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.ClassCastException: [Ljava.lang.Object;
at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1114)
at javax.faces.component.UICommand.restoreState(UICommand.java:264)
at org.ajax4jsf.component.html.HtmlAjaxCommandLink.restoreState(HtmlAjaxCommandLink.java:1546)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1007)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1019)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1019)
at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1019)
at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:246)
at com.sun.faces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:228)
at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:116)
at org.ajax4jsf.application.AjaxViewHandler.restoreView(AjaxViewHandler.java:159)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:157)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
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:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
------------------------------------------------------
and here is the code of the JSP:
------------------------------------------------------
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
MAP - Módulo de Aplicação de Provas
function init_dw_Scroll() {
var wndo1 = new dw_scrollObj('historico', 'lyr1');
wndo1.setUpScrollbar("dragBar1", "track1", "v", 1, 1);
wndo1.setUpScrollControls('scrollbar1');
scrollerArrowUp = document.getElementById('up1');
scrollerArrowUp.onclick= function(){ return false;};
scrollerArrowUp.onmouseover= function(){dw_scrollObj.initScroll('historico','up');};
scrollerArrowUp.onmouseout= function(){dw_scrollObj.stopScroll('historico')};
scrollerArrowUp.onmousedown= function(){dw_scrollObj.doubleSpeed('historico');};
scrollerArrowUp.onmouseup= function(){dw_scrollObj.resetSpeed('historico');};
scrollerArrowDown = document.getElementById('down1');
scrollerArrowDown.onclick= function(){ return false;};
scrollerArrowDown.onmouseover= function(){dw_scrollObj.initScroll('historico','down');};
scrollerArrowDown.onmouseout= function(){dw_scrollObj.stopScroll('historico')};
scrollerArrowDown.onmousedown= function(){dw_scrollObj.doubleSpeed('historico');};
scrollerArrowDown.onmouseup= function(){dw_scrollObj.resetSpeed('historico');};
}
// if necessary objects exists link in the style sheet and call the init function onload
if ( document.getElementById && document.getElementsByTagName ) {
dw_writeStyleSheet('js/css/scroll_multi.css');
//addLoadEvent(init_dw_Scroll);
}
<f:view>
<h:form>
<a4j:poll
id= "beeper"
interval="60000"
action="#{provaBean.decrementaTempoRestante}"
reRender="tempoRestante"
enabled="true"
>
<a4j:actionparam value="#{provaBean.numeroInscricao}"
assignTo="#{provaBean.numeroInscricao}" />
</a4j:poll>
</h:form>
<h:form id="formProva">
<h:inputHidden id="param0" value="#{provaBean.numeroInscricao}"></h:inputHidden>
Numero de Inscrição:<h:outputLabel for="test"
value="#{provaBean.candidato.nroInscricao}"></h:outputLabel>
Candidato: <h:outputLabel for="test"
value="#{provaBean.candidato.nomeCandidato}"></h:outputLabel>
Questões: <h:outputLabel value="#{provaBean.prova.questoes}" />
Respondidas:
<a4j:region>
<h:outputText id="nroQuestoesResp" style="font-size:12px;"
value="#{provaBean.questoesRespondidas}" />
</a4j:region>
Horário InÃcio:<h:outputLabel
value="#{provaBean.prova.horaInicio}">
<f:convertDateTime pattern="HH:mm" />
</h:outputLabel>
Horário Términio:<h:outputLabel
value="#{provaBean.prova.horaTermino}">
<f:convertDateTime pattern="HH:mm" />
</h:outputLabel>
Tempo Restante:<h:outputLabel
value="#{provaBean.prova.tempoRestante}" id="tempoRestante" styleClass="#{provaBean.prova.corTempoRestante}"/>
<rich:panel id="ProvaMaterias" style="border-style:none;">
<h:inputHidden id="param1" value="#{provaBean.indiceMateria}"></h:inputHidden>
<%--------------------------------------------------------------------------------------------------------------------
script gerado para inserir o valor de indiceMateria,
do bean materiaBean,
para o atributo indiceMateria, mas do bean ProvaBean,
uma vez que existem limitacoes que impossibilitam
o uso direto de atribuicao, salvo a arquitetura
--------------------------------------------------------------------------------------------------------------------%>
<f:verbatim>
'</f:verbatim>
<f:verbatim>'
function updateParam1(){
param = document.getElementById('formProva:param1');
param.value = '<h:outputText value="#{materiaBean.indiceMateria}" />';
}
'</f:verbatim>
<f:verbatim>'
</f:verbatim>
<a4j:commandLink action="#{materiaBean.carregarAnterior}"
reRender="ProvaMaterias, painel"
oncomplete="updateParam1()"
>
<f:verbatim>
<
</f:verbatim>
<a4j:actionparam value="#{materiaBean.numeroInscricao}"
assignTo="#{materiaBean.numeroInscricao}" />
<a4j:actionparam value="#{materiaBean.indiceMateria}"
assignTo="#{materiaBean.indiceMateria}" />
</a4j:commandLink>
<f:verbatim>
</f:verbatim>
<a4j:repeat var="materia" value="#{materiaBean.listaMateria}">
<f:verbatim>
</f:verbatim>
<a4j:region>
<a4j:commandLink action="#{materiaBean.selecionarMateria}"
value="#{materia.descricao}" reRender="ProvaMaterias, painel"
oncomplete="updateParam1()">
<a4j:actionparam name="teste1" value="#{materia.indice}"
assignTo="#{materiaBean.indiceMateria}" />
<a4j:actionparam name="teste2"
value="#{materiaBean.numeroInscricao}"
assignTo="#{materiaBean.numeroInscricao}" />
</a4j:commandLink>
</a4j:region>
<f:verbatim>
</f:verbatim>
<h:outputText value="#{materia.separador}"></h:outputText>
</a4j:repeat>
<f:verbatim>
</f:verbatim>
<a4j:commandLink action="#{materiaBean.carregarProxima}"
reRender="ProvaMaterias, painel"
oncomplete="updateParam1()">
<f:verbatim>
>
</f:verbatim>
<a4j:actionparam value="#{materiaBean.numeroInscricao}"
assignTo="#{materiaBean.numeroInscricao}" />
<a4j:actionparam value="#{materiaBean.indiceMateria}"
assignTo="#{materiaBean.indiceMateria}" />
</a4j:commandLink>
<f:verbatim>
</f:verbatim>
</rich:panel>
<rich:panel id="painel" style="border-style:none;" >
<h:inputHidden id="param2" value="#{provaBean.indiceQuestao}"></h:inputHidden>
<%--------------------------------------------------------------------------------------------------------------------
script gerado para inserir o valor de indiceQuestao,
do bean QuestaoBean,
para o atributo indiceQuestao, mas do bean ProvaBean,
uma vez que existem limitacoes que impossibilitam
o uso direto de atribuicao, salvo a arquitetura
--------------------------------------------------------------------------------------------------------------------%>
<f:verbatim>
'</f:verbatim>
<f:verbatim>'
function updateParam2(){
param = document.getElementById('formProva:param2');
param.value = '<h:outputText value="#{questaoBean.indiceQuestao}" />';
}
'</f:verbatim>
<f:verbatim>'
</f:verbatim>
<h:inputHidden id="param3" value="#{provaBean.resultado}"></h:inputHidden>
<f:verbatim>
'</f:verbatim>
<f:verbatim>'
function updateParam3(){
param = document.getElementById('formProva:param3');
param.value = '<h:outputText value="#{provaBean.resultado}" />';
}
'</f:verbatim>
<f:verbatim>'
</f:verbatim>
<rich:messages
layout="table" ajaxRendered="true"
>
<f:facet name="errorMarker">
</f:facet>
</rich:messages>
<f:verbatim>
</f:verbatim>
<rich:dataTable value="#{questaoBean.listaDummy}" id="dataTableQuestao"
rendered="#{questaoBean.iniciado}">
<rich:column style="width:500;">
<f:verbatim>
</f:verbatim>
<h:outputLabel style="font-size:17px;border-style:none;"
value="Questão número #{questaoBean.indiceQuestao}"></h:outputLabel>
<f:verbatim>
</f:verbatim>
<h:outputText
value="Carta: #{questaoBean.questaoAtual.carta}"
rendered="#{questaoBean.questaoAtual.hasCarta}"
></h:outputText>
<f:verbatim>
</f:verbatim>
<h:outputText value="#{questaoBean.questaoAtual.enunciado}"></h:outputText>
<f:verbatim>
</f:verbatim>
<a4j:region>
<h:selectOneRadio id="radioComHist" value="#{questaoBean.escolhido}" layout="pageDirection"
styleClass="questaoLabel">
<f:selectItems id="radioComHist1" value="#{questaoBean.listaAlternativas}"
/>
<a4j:support id="radioComHist2" event="onclick"
action="#{questaoBean.selecionaRadio}" reRender="painel, nroQuestoesResp">
<a4j:actionparam name="teste110"
value="#{questaoBean.numeroInscricao}"
assignTo="#{questaoBean.numeroInscricao}" />
<a4j:actionparam name="teste120"
value="#{questaoBean.indiceMateria}"
assignTo="#{questaoBean.indiceMateria}" />
<a4j:actionparam name="teste130"
value="#{questaoBean.indiceQuestao}"
assignTo="#{questaoBean.indiceQuestao}" />
</a4j:support>
</h:selectOneRadio>
<%--------------------------------------------------------------------------------------------------------------------
script gerado para inserir a letra da questao antes
da radio, uma vez que a selectOneRadio nao permite a
insercao de elementos sem que haja quebra de linhas entre
a composicao da radio e do label que vem em frente da radio.
--------------------------------------------------------------------------------------------------------------------%>
<f:verbatim>
'</f:verbatim>
<f:verbatim>'
var letrasAlternativas = '<h:outputText value="#{questaoBean.listaLetrasAlternativas}" />';
var tableradio = document.getElementById('formProva:dataTableQuestao:0:radioComHist');
function injetarLetrasAlternativas(table,lista){
//alert(table.cells+'\n'+table.rows);
if (table.rows != null ){
var tempLetras = lista.split(',');
for (i = 0 ; i < tableradio.rows.length && i < tempLetras.length ; i++){
var cell = table.rows.getElementsByTagName('td')[0];
var tempSpan = ''+tempLetras+'';
cell.innerHTML = tempSpan + cell.innerHTML;
}
}
}
injetarLetrasAlternativas(tableradio,letrasAlternativas);
'</f:verbatim>
<f:verbatim>'
</f:verbatim>
</a4j:region>
</rich:column>
<rich:column rendered="#{questaoBean.questaoAtual.hasHistorico}">
<f:verbatim>
Histórico
</f:verbatim>
<h:outputText value="#{questaoBean.questaoAtual.historico}"></h:outputText>
<f:verbatim>
<!-- border attribute added to reduce support questions on the subject.
If you like valid strict markup, remove and place a img {border:none;} spec in style sheet -->
init_dw_Scroll() ;
</f:verbatim>
</rich:column>
</rich:dataTable>
<f:verbatim>
</f:verbatim>
<a4j:commandLink action="#{questaoBean.carregarAnterior}"
reRender="painel" rendered="#{questaoBean.iniciado}"
oncomplete="updateParam2()">
<f:verbatim>
<
</f:verbatim>
<a4j:actionparam value="#{questaoBean.numeroInscricao}"
assignTo="#{questaoBean.numeroInscricao}" />
<a4j:actionparam value="#{questaoBean.indiceMateria}"
assignTo="#{questaoBean.indiceMateria}" />
<a4j:actionparam value="#{questaoBean.indiceQuestao}"
assignTo="#{questaoBean.indiceQuestao}" />
</a4j:commandLink>
<f:verbatim>
</f:verbatim>
<a4j:repeat var="questao" value="#{questaoBean.listaQuestoes}"
rendered="#{questaoBean.iniciado}" >
<f:verbatim>
</f:verbatim>
<a4j:region>
<a4j:commandLink action="#{questaoBean.selecionaQuestao}"
value="#{questao.indice}" reRender="painel"
styleClass="#{questao.isRespondido}"
oncomplete="updateParam2()">
<a4j:actionparam name="teste3"
value="#{questaoBean.numeroInscricao}"
assignTo="#{questaoBean.numeroInscricao}" />
<a4j:actionparam name="teste4"
value="#{questaoBean.indiceMateria}"
assignTo="#{questaoBean.indiceMateria}" />
<a4j:actionparam name="teste5" value="#{questao.indice}"
assignTo="#{questaoBean.indiceQuestao}" />
</a4j:commandLink>
</a4j:region>
<f:verbatim>
</f:verbatim>
</a4j:repeat>
<f:verbatim>
</f:verbatim>
<a4j:commandLink action="#{questaoBean.carregarProxima}"
reRender="painel" rendered="#{questaoBean.iniciado}"
oncomplete="updateParam2()">
<f:verbatim>
>
</f:verbatim>
<a4j:actionparam value="#{questaoBean.numeroInscricao}"
assignTo="#{questaoBean.numeroInscricao}" />
<a4j:actionparam value="#{questaoBean.indiceMateria}"
assignTo="#{questaoBean.indiceMateria}" />
<a4j:actionparam value="#{questaoBean.indiceQuestao}"
assignTo="#{questaoBean.indiceQuestao}" />
</a4j:commandLink>
<f:verbatim>
</f:verbatim>
</rich:panel>
<a4j:commandLink action="#{provaBean.confirmarEncerrarProva}"
reRender = "painel, botoes" oncomplete="updateParam3();">
<f:verbatim>
Encerrar Prova
</f:verbatim>
</a4j:commandLink>
<a4j:region id="btnChamaFiscal">
<a4j:commandLink
action="#{provaBean.mudaBeep}" reRender="btnChamaFiscal, repetidor"
>
<f:verbatim>
Fiscal
</f:verbatim>
<a4j:actionparam value="#{provaBean.numeroInscricao}"
assignTo="#{provaBean.numeroInscricao}" />
</a4j:commandLink>
</a4j:region>
</h:form>
<a4j:form >
<a4j:region >
<a4j:poll id="repetidor" interval="1500" action="#{provaBean.testaChamaFiscal}"
oncomplete="fimChamaFiscal('#{provaBean.chamaFiscal}');"
binding="#{provaBean.beeper}" reRender="btnChamaFiscal"
enabled="false"
>
<a4j:actionparam value="#{provaBean.numeroInscricao}"
assignTo="#{provaBean.numeroInscricao}" />
<a4j:actionparam value="#{provaBean.chamaFiscal}"
assignTo="#{provaBean.chamaFiscal}" />
</a4j:poll>
</a4j:region>
</a4j:form>
</f:view>
--------------------------------
and here are the .xml files:
Web.xml
-------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>AnacMAP</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/contexto/resources.xml
/WEB-INF/contexto/persistence.xml
/WEB-INF/contexto/service.xml
</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>plain</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
REQUEST
FORWARD
INCLUDE
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<listener-class>br.gov.anac.sapo.web.context.ContextLoaderListener</listener-class>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
-------------------------------
Faces-config.xml
------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
<locale-config>
<default-locale>pt_BR</default-locale>
<supported-locale>pt_BR</supported-locale>
</locale-config>
<message-bundle>recursos</message-bundle>
<!-- ************************************************************
managed beans
*************************************************************** -->
<managed-bean>
<managed-bean-name>provaBean</managed-bean-name>
<managed-bean-class>br.gov.anac.sapo.realizarProva.apresentacao.ProvaBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>candidatoFacade</property-name>
#{candidatoFacade}
</managed-property>
<managed-property>
<property-name>provaFacade</property-name>
#{provaFacade}
</managed-property>
<managed-property>
<property-name>materiaBean</property-name>
#{materiaBean}
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>materiaBean</managed-bean-name>
<managed-bean-class>br.gov.anac.sapo.realizarProva.apresentacao.MateriaBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>provaFacade</property-name>
#{provaFacade}
</managed-property>
<managed-property>
<property-name>questaoBean</property-name>
#{questaoBean}
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>questaoBean</managed-bean-name>
<managed-bean-class>br.gov.anac.sapo.realizarProva.apresentacao.QuestaoBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>provaFacade</property-name>
#{provaFacade}
</managed-property>
</managed-bean>
<!-- ************************************************************
Navigation Rules
*************************************************************** -->
<navigation-rule>
<display-name>login</display-name>
<from-view-id>/confirmarCandidato.jsp</from-view-id>
<navigation-case>
<from-outcome>confirma</from-outcome>
<to-view-id>/confirmarCandidato2.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<display-name>cancelar</display-name>
<from-view-id>/confirmarCandidato2.jsp</from-view-id>
<navigation-case>
<from-outcome>cancela</from-outcome>
<to-view-id>/confirmarCandidato.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>inicia</from-outcome>
<to-view-id>/realizarProva.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<display-name>prova</display-name>
<from-view-id>/realizarProva.jsp</from-view-id>
<navigation-case>
<from-outcome>encerra</from-outcome>
<to-view-id>/resultadoFinal.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>confirma</from-outcome>
<to-view-id>/finalizarProva.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<display-name>confirmacao</display-name>
<from-view-id>/finalizarProva.jsp</from-view-id>
<navigation-case>
<from-outcome>volta</from-outcome>
<to-view-id>/realizarProva.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>encerra</from-outcome>
<to-view-id>/resultadoFinal.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<converter-id>conversorLong</converter-id>
<converter-class>
br.gov.anac.sapo.commons.support.converter.ConversorLong
</converter-class>
<converter-id>conversorInteger</converter-id>
<converter-class>
br.gov.anac.sapo.commons.support.converter.ConversorInteger
</converter-class>
</faces-config>
------------------------------
Any1?
thx for the attention