ola sou nova por aqui e estou precisando de ajuda com java e jsf nao consigo fazer o jsf executar um metodo segue o codigo.
livro.java
package model;
public class Livro {
private int codigo;
private int isbn;
private String descricao;
private int peso;
private String autor;
private String email;
private int cpf;
public Livro(int codigo, int isbn,String descricao,int peso,String autor,
String email,int cpf){
this.codigo=codigo;
this.isbn=isbn;
this.descricao=descricao;
this.peso=peso;
this.autor=autor;
this.email=email;
this.cpf=cpf;
};
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public int getIsbn() {
return isbn;
}
public void setIsbn(int isbn) {
this.isbn = isbn;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getPeso() {
return peso;
}
public void setPeso(int peso) {
this.peso = peso;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getCpf() {
return cpf;
}
public void setCpf(int cpf) {
this.cpf = cpf;
}
}
result.java
package model;
import java.util.ArrayList;
public class Result {
private int codigo;
private int isbn;
private String descricao;
private int peso;
private String autor;
private String email;
private int cpf;
private ArrayList<Livro> liv = new ArrayList<Livro>();
public String adicionar(){
liv.add(new Livro (getCodigo(),getIsbn(),getDescricao(),getPeso(),
getAutor(),getEmail(),getCpf()));
return "SUCCES";
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public int getIsbn() {
return isbn;
}
public void setIsbn(int isbn) {
this.isbn = isbn;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getPeso() {
return peso;
}
public void setPeso(int peso) {
this.peso = peso;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getCpf() {
return cpf;
}
public void setCpf(int cpf) {
this.cpf = cpf;
}
public ArrayList<Livro> getLiv() {
return liv;
}
public void setLiv(ArrayList<Livro> liv) {
this.liv = liv;
}
}
cadlivro.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
<html>
<head>
<title></title>
</head>
<body>
<f:view>
<h:form>
<h:panelGrid columns="2" width="611">
</h:panelGrid>
<h:panelGrid columns="2" width="269">
<h:outputText value="Codigo"/>
<h:inputText value="#{livro.codigo}" />
<h:outputText value="ISBN" />
<h:inputText value="#{livro.isbn}" />
<h:outputText value="Descrição" />
<h:inputText value="#{livro.descricao}" />
<h:outputText value="Autor" />
<h:inputText value="#{livro.autor}" />
<h:outputText value="CPF" />
<h:inputText value="#{livro.cpf}"/>
<h:outputText value="Peso" />
<h:inputText value="#{livro.peso}" />
</h:panelGrid>
<h:panelGrid columns="3" width="579">
<t:outputText value="Email:" style=" width : 35px;"/>
<t:inputText value="#{livro.email}" required="true" id="email" autocomplete="true">
<t:validateEmail message="Endereço de email inválido!" />
</t:inputText>
<h:message for="email" styleClass="red" infoClass="red" style="red" tooltip="hello"/>
</h:panelGrid>
<h:panelGrid columns="4" border="1" cellpadding="1" width="263">
<h:commandButton actionListener="#{resultado.adicionar}" value="Salvar" />
<h:commandButton value="Deletar" />
<h:commandButton value="Editar" />
<h:commandButton action="SUCCES" value="Listar" />
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
Acredito que seja o meu codigo java que ta errado, como vcs podem ver pelo codigo eu sou iniciante se alguem puder me ajudar fico mto grato valeu gente
mas oque voce quer relativamente?
mto obrigada por responder leandrokjava o q
eu quero q quando eu clicar no botao salvar ele adicione os dados que eu informei no formulario em um ArrayList para depois eu exibir tds em uma datatable
obrigada
aí gente por favor me ajudem
Oi!
Eu vi que no código você colocou o método adicionar retornando String e na página você chamou um
actionListener. Um actionListener tem retorno void.
O jeito correto seria você mudar a assinatura do método para public String adicionar(ActionEvent event)
caso você queira que este método seja executado mas a página continue a mesma
ou então mudar na página para usar action ao invés de actionListener (Só que precisa retornar uma string
pro faces-config decidir para qual página ir. Não sei se retornando null no método iria funcionar caso você
não deseje sair da página)
Valeu!
Fiz do jeito q vc falou rafael coloquei (ActionEvent event) na assinatura do metodo mas ta dando este erro aqui
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Exception while invoking expression #{resultado.adicionar}
javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
javax.faces.el.EvaluationException: Exception while invoking expression #{resultado.adicionar}
org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:165)
javax.faces.component.UICommand.broadcast(UICommand.java:86)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
javax.faces.FacesException: java.lang.ClassNotFoundException: model.Result
org.apache.myfaces.shared_impl.util.ClassUtils.simpleClassForName(ClassUtils.java:162)
org.apache.myfaces.shared_impl.util.ClassUtils.newInstance(ClassUtils.java:265)
org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:50)
org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:311)
org.apache.myfaces.config.LastVariableResolverInChain.resolveVariable(LastVariableResolverInChain.java:42)
org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(ValueBindingImpl.java:574)
org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
org.apache.myfaces.el.ValueBindingImpl.resolveToBaseAndProperty(ValueBindingImpl.java:455)
org.apache.myfaces.el.MethodBindingImpl.resolveToBaseAndProperty(MethodBindingImpl.java:180)
org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:114)
javax.faces.component.UICommand.broadcast(UICommand.java:86)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
java.lang.ClassNotFoundException: model.Result
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:247)
org.apache.myfaces.shared_impl.util.ClassUtils.classForName(ClassUtils.java:138)
org.apache.myfaces.shared_impl.util.ClassUtils.simpleClassForName(ClassUtils.java:157)
org.apache.myfaces.shared_impl.util.ClassUtils.newInstance(ClassUtils.java:265)
org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:50)
org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:311)
org.apache.myfaces.config.LastVariableResolverInChain.resolveVariable(LastVariableResolverInChain.java:42)
org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(ValueBindingImpl.java:574)
org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124)
org.apache.myfaces.el.ValueBindingImpl.resolveToBaseAndProperty(ValueBindingImpl.java:455)
org.apache.myfaces.el.MethodBindingImpl.resolveToBaseAndProperty(MethodBindingImpl.java:180)
org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:114)
javax.faces.component.UICommand.broadcast(UICommand.java:86)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
note The full stack trace of the root cause is available in the JBossWeb/2.0.0.GA_CP01 logs.
--------------------------------------------------------------------------------
JBossWeb/2.0.0.GA_CP01
sera q nao é as classes java que tao erradas?
desde ja mto obrigada
Eu vi por alto que tem uma exceção do tipo ClassNotFoundException?
javax.faces.FacesException: java.lang.ClassNotFoundException: model.Result
Confere no faces-config se o nome do bean e o caminho estão corretos.
parece q ta certo to achando mesmo que é a classe java o q vc acha?[code]
<?xml version="1.0" encoding="UTF-8"?>
livro
model.Livro
session
resultado
model.Result
session
/MENU.jsp
Redireciona qdo clicka num determinado menu
go_cadlivro
/cadLivro.jsp
go_listaLivros
/listarlivros.jsp
/cadLivro.jsp
SUCCES
/listarlivros.jsp
/listarlivros.jsp
voltar
/cadLivro.jsp
[/code]
Acho que sei o que pode ser
Você usa dois beans. Um pra conter os dados e outro pra poder executar a ação.
Só que quando você entra no método do Result você não consegue ter acesso ao dados do livro.
O que você pode tentar é o seguinte trecho de código dentro do método adicionar.
[code]
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
Livro livro = (Livro) application.evaluateExpression("#{livro}", Livro.class);
Acho que é isso!
Por que a srta. tem 2 classes para fazer o que deseja?
Acredito que ela deva estar querendo usar padrão MVC. Embora este tipo de ação valesse a pena ficar na classe
Livro
[quote=rafael.espiritosanto]Acredito que ela deva estar querendo usar padrão MVC. Embora este tipo de ação valesse a pena ficar na classe
Livro[/quote]
Se ela estivesse usando Struts faria mais sentido, agora com JSF…