mfl0101
Dezembro 23, 2008, 9:35am
#1
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…
<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>
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
mfl0101
Dezembro 23, 2008, 11:06am
#3
[quote=moacirjava]<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>
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.
mfl0101
Dezembro 23, 2008, 3:15pm
#5
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
mfl0101
Dezembro 23, 2008, 3:43pm
#6
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:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
Faz um teste.
mfl0101
Dezembro 23, 2008, 7:35pm
#8
[quote=moacirjava]Experimenta adicionar, lá em cima, essas linhas no seus arquivos.xhtml:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
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:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
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!
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?