Incompatible argument to function: jsfx + Facelets + JSF

9 respostas
A

Boa tarde,

Estou lendo sobre Facelets e criei uma página para fazer alguns testes,
mas ainda não consegui exibir o conteúdo dela.

Acontece o seguinte erro:

javax.servlet.ServletException: java.lang.VerifyError: (class: org/apache/jsp/jspx/header_jspx, method: _jspx_meth_h_005finputSecret_005f0 signature: (Ljavax/servlet/jsp/PageContext;)Z) Incompatible argument to function
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:275)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.VerifyError: (class: org/apache/jsp/jspx/header_jspx, method: _jspx_meth_h_005finputSecret_005f0 signature: (Ljavax/servlet/jsp/PageContext;)Z) Incompatible argument to function
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
	java.lang.Class.getConstructor0(Class.java:2699)
	java.lang.Class.newInstance0(Class.java:326)
	java.lang.Class.newInstance(Class.java:308)
	org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:145)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Aqui está a minha página jspx:

<?xml version="1.0" encoding="ISO-8859-1"?>  
<html  
     xmlns:c="http://java.sun.com/jsp/jstl/core"  
     xmlns:jsp="http://java.sun.com/JSP/Page" 
     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="http://www.w3.org/1999/xhtml">  
  
  <ui:composition>
    <html xmlns="http://www.w3.org/1999/xhtml">
    
      <head>
        <title>Page Title</title>
      </head>
      
      <body>
       	
       	<h:outputText
			styleClass="labelHeader"
			value="#{msg.UC01_LOGIN_LABEL_USUARIO}" />

		<h:inputText
			styleClass="inputTextHeader"
			maxlength="20"
			value="" />

		<h:outputText styleClass="labelHeader" value="#{msg.UC01_LOGIN_LABEL_SENHA}" />

		<h:inputSecret
			styleClass="inputSecretHeader"
			redisplay="false"
			maxlength="20"
			value="" />
			
      </body>
      
    </html>
    
  </ui:composition>
</html>

A página estava funcionando corretamente antes de tentar utilizar o Facelets…

Alguém tem idéia de qual é o problema?

Obrigado…

9 Respostas

Cherubini

você configurou no web e no faces-config ?

caso esteja configurada, a extencao das suas paginas no web.xml estão jspx ?

exemplo meu com Facelets e JSF:

faces-config.xml

<application>
     <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>

web.xml (eu uso .xhtml e ACHO q com facelets é so .xhtml nos arquivos view):

<context-param>
	<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
               <param-value>.xhtml</param-value>
</context-param>
<context-param>
	<param-name>facelets.REFRESH_PERIOD</param-name>
	<param-value>2</param-value>
</context-param>
<context-param>
	<param-name>facelets.DEVELOPMENT</param-name>
	<param-value>true</param-value>
</context-param>

espero ter ajudado!

flws

A

Configurei no web e no faces-config, acredito que esteja ok, mas vou postar aqui, as vezes tem algo errado ainda.

A extenção das páginas no web.xml estão .jsfx.

Poisé não entendo se para usar o facelets é so .xhtml.

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</param-value>
    </context-param>
<!--    <context-param>-->
<!--        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>-->
<!--        <param-value>.jsp</param-value>-->
<!--	</context-param>-->
    
    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    
    <!-- Facelets -->
    <context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.jsfx</param-value>
	</context-param>
    
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"  
                               "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>
	<managed-bean>
	  <managed-bean-name>solucaoMB</managed-bean-name>
	  <managed-bean-class>solven.controller.ManterSolucaoMB</managed-bean-class>
	  <managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
	<application>
	    <locale-config>
	      <default-locale>en</default-locale>
	    </locale-config>
		<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  	</application>
</faces-config>

Eu disse no primeiro post quer a extensao e jspx mas na verdade e jsfx :oops:
Obrigado pela ajuda…

Cherubini

tenta fazer um teste, so um apagina trocando a extenção para .xhtml dela e do web.xml!!!

A

Agora está sendo exibida uma página em branco…

Será que não está encontrando os arquivos necessários?

Parte do index.xhtml

...
<ui:composition template="/WEB-INF/layout/layout.xhtml">  
...

Meu layout.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">
      
	<head>
	
	  <title>
	  	<ui:insert name="title">
	  		Solven
	  	</ui:insert>
	  </title>
	  
	  <link rel="stylesheet" type="text/css" href="../css/solven.css" />
	  
	</head>

	<body>

		<div id="divHeader">
		    <ui:insert name="header">
		    	<ui:include src="header.xhtml"/>
		    </ui:insert>
		</div>
		
		<div id="divLogo" class="Logo">
		</div>
		
		<div id="divNav">
		    <ui:insert name="nav">
		    	<ui:include src="nav.xhtml"/>
		    </ui:insert>
		</div>
		
		<div id="divCorpo">
			<ui:insert name="corpo">
		    	<ui:include src="corpo.xhtml"/>  
			</ui:insert>
		</div>
		
		<div id="divFooter">
			<ui:insert name="footer">
		    	<ui:include src="footer.xhtml"/>  
			</ui:insert>
		</div>

	</body>

</html>
Cherubini

cara tenta pegar essa pasta layout e coloar fora do WEB-INF!!!

A

Não adiantou, pior que fica em branco e não da nenhum erro…

Tem alguma idéia do que eu posso tentar fazer… espero conseguir pegar a manha desse facelets…

Cherubini

olha o meu exemplo!

to usando Jboss 5.0 com Facelets 1.5

minha faces.config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
	<managed-bean>
		<managed-bean-name>skinHandler</managed-bean-name>
		<managed-bean-class>br.com.jmanager.handler.SkinHandler</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<managed-bean>
		<managed-bean-name>localeHandler</managed-bean-name>
		<managed-bean-class>br.com.jmanager.handler.LocaleHandler</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
		<application>
		<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
		<locale-config>
			<default-locale>pt_BR</default-locale>
			<supported-locale>en</supported-locale>
			<supported-locale>en_US</supported-locale>
		</locale-config>
		<message-bundle>br.com.jmanager.bundle.messages</message-bundle>
		<resource-bundle>
			<base-name>br.com.jmanager.bundle.resource</base-name>
			<var>texto</var>
		</resource-bundle>
	</application>
</faces-config>

meu web.xml

<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name>JManager</display-name>
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.REFRESH_PERIOD</param-name>
		<param-value>2</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.DEVELOPMENT</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>server</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>#{skinHandler.skin}</param-value>
	</context-param>

	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>
	<filter>
		<display-name>Ajax4jsf Filter</display-name>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
		<dispatcher>ERROR</dispatcher>
	</filter-mapping>
	<listener>
		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
	</listener>
	<!-- Faces Servlet -->
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- Faces Servlet Mapping -->
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.xhtml</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<login-config>
		<auth-method>BASIC</auth-method>
	</login-config>
</web-app>

as conf de ajax é pq eu to usando o RIchFaces

pagina de template(templateLogin.xhtml)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:ui="http://java.sun.com/jsf/facelets">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JManager - Gerenciador generico</title>
</head>
<body>

<f:view>
	<rich:spacer width="200">
	</rich:spacer>


	<h:panelGrid columns="1">
		<ui:include src="/view/cabecalho.xhtml" />

		<ui:insert name="login">

		</ui:insert>

		<ui:include src="/view/rodape.xhtml" />
	</h:panelGrid>
</f:view>

</body>
</html>

e minha pagina q usa o template

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:ui="http://java.sun.com/jsf/facelets">

<f:subview>
	<ui:composition template="/template/templateLogin.xhtml">

		<ui:define name="login">

			<b>FUNFO</b>

		</ui:define>

	</ui:composition>
</f:subview>

</html>

agora ta bem detalhado !!!

espero q ajude!

A

Valeu! Obrigado…

Vou tentar me virar aqui… :wink:

[]s

Cherubini

tenta ai!

caso nao consigo post de novo q agente ajuda!! :wink:

Criado 20 de agosto de 2009
Ultima resposta 21 de ago. de 2009
Respostas 9
Participantes 2