JSF + Facelets + Netbeans 6.5

Estava procurando algum plugin que facilitasse a utilização do facelets e a melhor opção no momento é o Netbeans 6.5 com seu plugin, pois facilita bastante o desenvolvimento.

Agora é o seguinte: meu web.xml e meu faces-config.xml estão configurados conforme a documentação do facelets, mas quando tento passar os valores pelo form, é como se não tivesse reconhecendo o JSF.

Os meus inputs estão assim, como deve está, eu acho:

<form jsfc="h:form">
<input type="text" jsfc="h:inputText" value="#{alunoBean.aluno.nome}"> </input>

<input type="submit" jsfc="h:commandButton" value="Cadastrar" action="#{alunoBean.salvar}"> </input>

</form>

Quando eu rodo a aplicação o valor do meu campo text (nome) aparece da mesma forma como foi passado em value, e não como um campo vazio para o usuário digitar, e o meu botão cadastrar não faz a persistencia.

Alguém já passou por isso? É bug no netbeans 6.5? Estou fazendo errado? Ajuda, please…

&lt;form jsfc="h:form"&gt; &lt;input type="text" jsfc="h:inputText" value="alunoBean.aluno.nome"&gt; &lt;/input&gt; &lt;input type="submit" jsfc="h:commandButton" value="Cadastrar" action="#{alunoBean.salvar}"&gt; &lt;/input&gt; &lt;/form&gt;

O que vc quer é que input tenha um valor logo de cara?

Se for acho que vc deve estar esquecendo de acessar o bean experimenta mudar essa tag

[quote=moacirjava]&lt;form jsfc="h:form"&gt; &lt;input type="text" jsfc="h:inputText" value="alunoBean.aluno.nome"&gt; &lt;/input&gt; &lt;input type="submit" jsfc="h:commandButton" value="Cadastrar" action="#{alunoBean.salvar}"&gt; &lt;/input&gt; &lt;/form&gt;

O que vc quer é que input tenha um valor logo de cara?

Se for acho que vc deve estar esquecendo de acessar o bean experimenta mudar essa tag

ops foi um erro meu de digitação, vou editá-lo. Na verdade a linha de codigo está igual ao que vc apresentou. E mesmo assim o erro é o mesmo como mencionei. Já copiei e colei alguns codigos da net e mesmo assim os erros sao os mesmos.

No cabeçalho da sua página jsp vc incluiu as tags para trabalhar com o jsf e html?
Posta seu bean também.

Vou postar todo o código para ver se eu saio desse 0 a 0:

Estou usando o exemplo com o JBoos Tools - no netbeans 6.5 tb nao funcionou.

Vamos lá:

Cadastro.class

package modelo;

public class Cadastro {
	private String nome;
	private String email;
	private String telefone;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

}

Controle.class

package controle;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import modelo.Cadastro;

public class Controle {
	private Cadastro cadastro;
	private List<Cadastro> cadList = new ArrayList<Cadastro>();
	
	public Controle(){
		cadastro = new Cadastro();
	}
	
	public void adicionar(Cadastro c){
		cadList.add(c);
	}
	
	public DataModel getTodos(){
		return new ListDataModel(cadList);
	}
	
	public String novo(){
		cadastro = new Cadastro();
		return "cadastro";
	}
	
	public String salvar(){
		this.adicionar(cadastro);
		FacesContext context = FacesContext.getCurrentInstance();
		FacesMessage message = new FacesMessage("Salvo com sucesso.");
		context.addMessage(null, message);
		return "cadastrados";
	}

	public Cadastro getCadastro() {
		return cadastro;
	}

	public void setCadastro(Cadastro cadastro) {
		this.cadastro = cadastro;
	}

	public List<Cadastro> getCadList() {
		return cadList;
	}

	public void setCadList(List<Cadastro> cadList) {
		this.cadList = cadList;
	}

}

cadastro.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:ui="http://java.sun.com/jsf/facelets">

<head>
<title>Trabalhando com Facelets </title>
</head>

<body>
	
	<form jsfc="h:form">
		<label jsfc="h:outputLabel" for="nome">Nome:</label>
		<input jsfc="h:inputText" type="text" id="nome" value="#{controle.cadastro.nome}" />
		<br />
		
		<label jsfc="h:outputLabel" for="email">Email:</label>
		<input jsfc="h:inputText" type="text" id="email" value="#{controle.cadastro.email}" />
		<br />
		
		<label jsfc="h:outputLabel" for="telefone">Telefone:</label>
		<input jsfc="h:inputText" type="text" id="telefone" value="#{controle.cadastro.telefone}" />
		<br />
		<br />
		
		<input jsfc="h:commandButton" type="submit" action="#{controle.salvar}" id="confirmar" value="Salvar" />
	
	</form>

</html>

cadastrados.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:ui="http://java.sun.com/jsf/facelets">

<head>
<title>Trabalhando com Facelets </title>
</head>

<body>
	<form jsfc="h:form">
		<table jsfc="h:dataTable" id="tabela" value="#{controle.todos}" var="item">
			<tr>
				<td jsfc="h:column">
					<f:facet name="header">
						<h:outputText value="Nome" />
					</f:facet>
					<h:outputText value="item.nome" />
				</td>
				
				<td jsfc="h:column">
					<f:facet name="header">
						<h:outputText value="E-mail" />
					</f:facet>
					<h:outputText value="item.email" />
				</td>
				
				<td jsfc="h:column">
					<f:facet name="header">
						<h:outputText value="Telefone" />
					</f:facet>
					<h:outputText value="item.telefone" />
				</td>
				
			</tr>		
		</table>
		
		<a jsfc="h:commandLink" action="#{controle.novo}">Novo</a>
		
	</form>


</html>

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>controle</managed-bean-name>
  <managed-bean-class>controle.Controle</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <navigation-rule>
  <from-view-id>/cadastro.xhtml</from-view-id>
  <navigation-case>
   <from-outcome>cadastrados</from-outcome>
   <to-view-id>/cadastrados.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <from-view-id>/cadastrados.xhtml</from-view-id>
  <navigation-case>
   <from-outcome>cadastro</from-outcome>
   <to-view-id>/cadastro.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
 </application>
</faces-config>

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">
 <description>Facelets StarterKit</description>
 <display-name>trabfacelets</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>client</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>com.sun.faces.verifyObjects</param-name>
  <param-value>true</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>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>

Libs
[list]common-annotations[/list]
[list]commons-beanutils[/list]
[list]commons-collections[/list]
[list]commons-digester[/list]
[list]commons-logging[/list]
[list]jsf-facelets[/list]
[list]jsf-facelets-1.0.10[/list]
[list]jsf-tlds[/list]
[list]jstl[/list]
[list]standard[/list]

Estava usando com o hibernate, mas pra facilitar coloquei num list. Aguardo e muito obrigado…

edit: da um erro 404 - not found

Resolvi a questão do erro 404. Mas o erro principal continua ocorrendo, exibe #{controle.cadastro.nome} ou no exemplo inicial #{alunoBean.aluno.nome}, em vez de aparecer os campos limpos para o usuário digitar os dados. E também continua não funcionando as ações. Sempre aparece um alerta de que o jsfc está indefinido.

Aguardo, após resolvermos essa questão, vou pagar um refrigerante pra vcs… rsrs

Experimenta adicionar, lá em cima, essas linhas no seus arquivos.xhtml:

&lt;%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%&gt; &lt;%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%&gt;

Faz um teste.

[quote=moacirjava]Experimenta adicionar, lá em cima, essas linhas no seus arquivos.xhtml:

&lt;%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%&gt; &lt;%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%&gt;

Faz um teste.[/quote]

Assim tb nao deu certo nao. Faz assim, me passa seu email pra eu mandar o arquivo.war, pode ser?

[quote=mfl0101][quote=moacirjava]Experimenta adicionar, lá em cima, essas linhas no seus arquivos.xhtml:

&lt;%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%&gt; &lt;%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%&gt;

Faz um teste.[/quote]

Assim tb nao deu certo nao. Faz assim, me passa seu email pra eu mandar o arquivo.war, pode ser?[/quote]

Te enviei um email. Me manda a pasta do seu projeto sem a pasta dist.

Estou um pouco ocupado nesse fim de ano, por isso, vou mandar pra vc um exemplo que tenho aqui de Facelets. Espero que te ajude.

Feliz Natal e Próspero Ano Novo! :wink:

Dae gente boa! 8)

Eu estou reabrindo esse tópico porque estou com o mesmo problema do mfl0101

Quando abre a página no navegador… nos campos de texto onde o usuario digita aparece dentro do campo de texto “#{controle.cadastro.nome}”, como se minha pagina .xhtml não estivesse reconhecendo as tags do jsf…

Alguém poderia me ajudar?

mfl0101, você conseguiu resolver o seu problema?

Grato pela ajuda.

Felipe

Quando eu rodo a aplicação o valor do meu campo text (nome) aparece da mesma forma como foi passado em value, e não como um campo vazio para o usuário digitar, e o meu botão cadastrar não faz a persistencia, se eu clicar em salvar ele grava no banco, mas somente com a chave os outros campos ficam null.

Aguém pode me ajudar?
Alguém sabe porque isso acontece?
Conseguiram resolver o problema apresentado aqui?