JSF se ta certo pq ñ vai?

10 respostas
robson_vs

Caras está ta F....

Tenho um form jsf com todos os seus arquivos q o compoem:
web.xml
faces-config.xml
SugestaoBean.java
sugestao.jsp
mensagemEnviada.jsp

Mais quando eu mando submeter a página nada acontece é como se ele desce um refresh na tela mais mantendo os dados no form e detalhe nenhuma mensagem é jogada no console do tomcat.

Gostaria de saber se alguem pode me ajudar.

Segue anexo os fontes dos arquivos mencionados web.xml
<?xml version="1.0"?>

<!--
 * Copyright 2004 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->

<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <!-- This web.xml can be used during debugging, when there is no myfaces.jar
        library available.

        The faces-config.xml file (that is normally in the myfaces.jar) must be
        copied to the /WEB-INF directory of the web context.

        The TLDs (that are normally in the myfaces.jar) must be
        copied to the /WEB-INF/lib directory of the web context.-->
    <description>debug web.xml</description>

    <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>
            /WEB-INF/faces-config.xml
        </param-value>
        <description>
            Comma separated list of URIs of (additional) faces config files.
            (e.g. /WEB-INF/my-config.xml)
            See JSF 1.0 PRD2, 10.3.2
        </description>
    </context-param>

    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
        <description>
            State saving method: "client" or "server" (= default)
            See JSF Specification 2.5.2
        </description>
    </context-param>

    <context-param>
        <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
        <param-value>true</param-value>
        <description>
            This parameter tells MyFaces if javascript code should be allowed in the
            rendered HTML output.
            If javascript is allowed, command_link anchors will have javascript code
            that submits the corresponding form.
            If javascript is not allowed, the state saving info and nested parameters
            will be added as url parameters.
            Default: "true"
        </description>
    </context-param>

    <context-param>
        <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
        <param-value>false</param-value>
    </context-param>

    <context-param>
        <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
        <param-value>true</param-value>
        <description>
            If true, rendered HTML code will be formatted, so that it is "human readable".
            i.e. additional line separators and whitespace will be written, that do not
            influence the HTML code.
            Default: "true"
        </description>
    </context-param>

    <context-param>
        <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
        <param-value>true</param-value>
        <description>
            If true, a javascript function will be rendered that is able to restore the
            former vertical scroll on every request. Convenient feature if you have pages
            with long lists and you do not want the browser page to always jump to the top
            if you trigger a link or button action that stays on the same page.
            Default: "false"
        </description>
    </context-param>

    <!-- Tiles ViewHandler config file -->
    
    <context-param>
    	<param-name>tiles-definitions</param-name>
    	<param-value>/WEB-INF/tiles.xml</param-value>
    	<description>
    	Tiles configuration
         definition files and a listener need to be defined.
         the listener will initialize JspTilesViewHandlerImpl with tiles definitions.
    	</description>
    </context-param>

    <!-- Extensions Filter -->
    <filter>
        <filter-name>extensionsFilter</filter-name>
        <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
        <init-param>
            <param-name>uploadMaxFileSize</param-name>
            <param-value>100m</param-value>
            <description>Set the size limit for uploaded files.
                Format: 10 - 10 bytes
                        10k - 10 KB
                        10m - 10 MB
                        1g - 1 GB
            </description>
        </init-param>
        <init-param>
            <param-name>uploadThresholdSize</param-name>
            <param-value>100k</param-value>
            <description>Set the threshold size - files
                    below this limit are stored in memory, files above
                    this limit are stored on disk.

                Format: 10 - 10 bytes
                        10k - 10 KB
                        10m - 10 MB
                        1g - 1 GB
            </description>
        </init-param>
<!--        <init-param>
            <param-name>uploadRepositoryPath</param-name>
            <param-value>/temp</param-value>
            <description>Set the path where the intermediary files will be stored.
            </description>
        </init-param>-->
    </filter>

    <filter-mapping>
        <filter-name>extensionsFilter</filter-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>extensionsFilter</filter-name>
        <url-pattern>/faces/*</url-pattern>
    </filter-mapping>


    <!-- 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 -->

    <!-- virtual path mapping -->
    <!--
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    -->

    <!-- extension mapping -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

    <!-- Welcome files -->

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    
	<jsp-config>
    	<jsp-property-group>
	      <url-pattern>*.jspf</url-pattern>
    	  <is-xml>true</is-xml>
	    </jsp-property-group>
	  </jsp-config>
    
</web-app>
faces-config.xml
<?xml version="1.0"?>
<!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>SugestaoBean</managed-bean-name>
		<managed-bean-class>br.com.greenline.falegreen.managedbean.SugestaoBean</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<navigation-rule>
		<from-view-id>/sugestao.jsp</from-view-id>
		<navigation-case>
			<from-outcome>success</from-outcome>
			<to-view-id>/mensagemEnviada.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>failer</from-outcome>
			<to-view-id>/pageError.jsp</to-view-id>
		</navigation-case>
	</navigation-rule>
</faces-config>
SugestaoBean.java
package br.com.greenline.falegreen.managedbean;

import br.com.greenline.falegreen.delegate.SugestaoDelegate;
import br.com.greenline.falegreen.model.Sugestao;

public class SugestaoBean {

	private Sugestao sugestaoVO = new Sugestao();

	public String enviarSugestao() {

		String action = null;

		System.out.println("teste");

		if (action == null) {
			System.out
					.println("Execultando o Metodo enviarSugestao da classe SugestaoBean");
			SugestaoDelegate sugestaoDelegate = new SugestaoDelegate();
			sugestaoDelegate.salvar(sugestaoVO);
			action = "success";
		} else {
			action = "failer";
		}
		return action;
	}

	public Sugestao getSugestaoVO() {
		return sugestaoVO;
	}

	public void setSugestaoVO(Sugestao sugestaoVO) {
		this.sugestaoVO = sugestaoVO;
		System.out.println("print setter");
	}
}
sugestao.jsp
<%@ page contentType="text/html; charset=Windows-31J" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/>
		<title></title>
	</head>
	<body>
		<f:view>
			<f:loadBundle basename="messages" var="msg"/>
			<h:form>
				<div style="position: absolute;left: 10;top: 10;width: 800;height: 40;">
					<jsp:include page="header.jspf"/>
				</div>
				
				<h:outputText style="position: absolute;left: 20;top: 90;width: 550;height: 30;color:#557755;font-size:20px;padding-left:4px;padding-top:4px;" value="#{msg.tituloSugestao}"/>
				<h:outputText style="position: absolute;left: 390;top: 110;width: 180;height: 20;color:#557755;font-size:12px;padding-left:4px;padding-top:4px;" id="data" value="#{SugestaoBean.sugestaoVO.data}"/>
				
				<h:outputText style="position: absolute;left: 170;top: 150;width: 150;height: 20;color:#557755;font-size:12px;padding-left:4px;padding-top:4px;" value="#{msg.textoDepartamento}"/>
				<h:inputText style="position: absolute;left: 330;top: 150;width: 240;height: 20;" id="departamento" required="true" tabindex="1" value="#{SugestaoBean.sugestaoVO.departamento}"/>
				
				<h:outputText style="position: absolute;left: 170;top: 220;width: 150;height: 20;color:#557755;font-size:12px;padding-left:4px;padding-top:4px;" value="#{msg.textoSugestao}"/>
				<h:inputTextarea style="position: absolute;left: 330;top: 180;width: 240;height: 120;" id="sugestao" required="true" tabindex="2" value="#{SugestaoBean.sugestaoVO.sugestao}"/>
				
				<h:outputText style="position: absolute;left: 170;top: 310;width: 150;height: 20;color:#557755;font-size:12px;padding-left:4px;padding-top:4px;" value="#{msg.textoIdentificacao}"/>
				<h:outputText style="position: absolute;left: 170;top: 330;width: 150;height: 20;color:#557755;font-size:12px;padding-left:4px;padding-top:4px;" value="#{msg.textoOpcional}"/>
				<h:inputText style="position: absolute;left: 330;top: 320;width: 240;height: 20;" id="identificacao" required="false" tabindex="3" value="#{SugestaoBean.sugestaoVO.identificacao}"/>
				
				<h:commandButton style="position: absolute;left: 330;top: 360;width: 160;height: 20;" value="#{msg.botaoSugestao}" tabindex="4" action="#{SugestaoBean.enviarSugestao}"/>				
			</h:form>
		</f:view>
			<div align="center" style="position: absolute;left: 10;top: 400;width: 800;height: 55;">
				<jsp:include page="footer.jspf"/>
			</div>
	</body>
</html>
mensagemEnviada.jsp
<%@ page contentType="text/html; charset=Windows-31J" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/>
		<title></title>
	</head>
	<body>
		<f:view>
			<f:loadBundle basename="messages" var="msg"/>
			<h:form>
				<h:outputText style="position: absolute;left: 200;top: 100;width: 410;height: 30;color:#557755;font-size:25px;padding-left:4px;padding-top:4px;" value="#{msg.sistemaFaleGreen}"/>
				<h:outputText id="message" style="position: absolute;left: 230;top: 170;width: 330;height: 40;color:#45c3ee;font-size:15px;padding-left:4px;padding-top:4px;" value="#{msg.mensagemEnviada}"/>
			</h:form>
		</f:view>
	</body>
</html>
[color=darkblue]Agradeço a a tenção de todos[/color]

10 Respostas

javaBeats

Coloque um <h:messages /> em algum lugar da sua página JSF, para que você capture os erros de validação e conversão. Normalmente são erros assim.

Rodrigo

robson_vs

legal Rodrigo vou tentar

robson_vs
como faço para postar todas as mensagens?

sei postar uma por uma dede jeito

<h:message for=departamento />

<h:message for=sugestao />
javaBeats

Com um <h:messages />, a tag no plural, sem atributos.

<h:messages style="color: red;" />
robson_vs

legal consegui descobrir o problema é q o meu campo departamento ñ aceita string pois a idéia era colocalo como campo de seleção.

vou apanhar um bucado para conseguir arrumar rss… é q estou começando agora e ja tenho q arrumar no meus ejbs rs…

Cara é foda o java para quem ta começando rs… é muito detalhezinha aqui e ali rs…

valeu a ajuda cara quando eu impacar de novo eu pesso um novo help e ñ vai demorar muito rs…

javaBeats

Java é legal… Dê a ele uma chance, e você vai perceber isso logo :wink:

Dica para se dar bem: leve em conta a OOP, pense em objetos, programe com o modelo na sua cabeça. O banco de dados é uma geladeira, só serve pra guardar os seus objetos quando eles não estão em memória. Então esqueça aquela velha dependência que você tinha do modelo relacional quando usava Delphi (blergh), VB (bleeeergh…), e outras linguagens semelhantes :smiley:

(PS: Claro que um banco de dados é muito mais que uma geladeira… quem manja de Java e OOP de verdade vai entender o espírito do comentário =)

robson_vs

Rodrigo deixa eu te fazer uma pergunta?
vc me parece conhecer bem de jsf vc teria algum tutorial para me fornecer? ou me mandar exemplos de códigos para q eu possa dar uma estudada?

sei lá um projeto modelo ta ligado só para mim dar uma olhada e ver e tentar entender melhor como funciona.

bom cara se puder eu ficarei muito grato.

meu email é [email removido]

até mais

javaBeats

Olá!

Kra, código eu não posso te mandar. Aprendi JSF para usar aqui na empresa, e todo código que acabei produzindo foi para o trampo… E este código eu não posso compartilhar, sinto muito :frowning:

Sobre tutoriais, você vai encontrar muita coisa boa aqui. Tem inclusive informações sobre desenvolvimento de componentes personalizados.

Eu escrevi um tutorial sobre desenv. de componentes com JSF 1.2, e mandei para o GUJ há poucos dias. Não sei se vai ser publicado, mas se for, talvez te ajude um pouco a entender a API.

E, claro, temos sempre o tutorial Java EE da própria Sun.

Rodrigo

robson_vs

Beleza kra sei como é estas coisas de trampo mais beleza valeu muito pela sua atenção, se vc navegando pela net achar alguma coisa q achar q pode me ajudar estamos ai a propósito onde vc trabalha se tiver precisando de alguem de nível iniciante me avise rs… trampar com quem manja ajuda agente a aprender rs…

Mais uma vez obrigado pela atenção.

robson_vs
Criado 30 de agosto de 2006
Ultima resposta 13 de set. de 2006
Respostas 10
Participantes 2