Caros colegas,
Apenas para efeitos didáticos, estou tentando capturar os dados de uma entidade em minha index.jsp. Consegui capturar os dados, porém não consigo setá-los no bean.
Abaixo os códigos.
index.jsp:
[code]
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>
<f:view>
<f:loadBundle basename=“com.corejsf.messages” var=“msgs” />
<h:outputText value="#{msgs.pageTitle}"/>
<h:form>
<h:dataTable value="#{customer.all}" var=“customers”
styleClass=“customers”
headerClass=“customersHeader” columnClasses=“custid,name,custid,name,custid,name,custid”>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msgs.customerIdHeader}"/>
</f:facet>
<h:outputText value="#{customers.Cust_ID}"/>
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msgs.nameHeader}"/>
</f:facet>
<h:outputText value="#{customers.Name}"/>
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msgs.phoneHeader}"/>
</f:facet>
<h:outputText value="#{customers.Phone_Number}"/>
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msgs.addressHeader}"/>
</f:facet>
<h:outputText value="#{customers.Street_Address}"/>
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msgs.cityHeader}"/>
</f:facet>
<h:outputText value="#{customers.City}"/>
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msgs.stateHeader}"/>
</f:facet>
<h:outputText value="#{customers.State}"/>
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value="#{msgs.delete}"/>
</f:facet>
<h:commandLink actionListener="#{customer.deleteRow}">
<h:outputText value=“excluir”/>
<f:param id=“excluir” name=“excluir” value="#{customers}" />
</h:commandLink>
</h:column>
</h:dataTable>
</h:form>
</f:view>
bean Name:
[code]package com.corejsf;
public class Name {
private int cust_ID;
private String name;
private String phone_Number;
private String street_Address;
private String city;
private String state;
private boolean delete=false;
public Name(){
}
public Name(int id, String name, String fone, String street, String city,
String state) {
this.cust_ID = id;
this.name = name;
this.phone_Number = fone;
this.street_Address = street;
this.city = city;
this.state = state;
}
public int getId() { return cust_ID; }
public void setId(int id) { this.cust_ID = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getFone() {return phone_Number; }
public void setFone(String fone) { this.phone_Number = fone; }
public String getStreet() { return street_Address; }
public void setStreet(String street) { this.street_Address = street; }
public String getCity() { return city; }
public void setCity(String city) { this.city = city; }
public String getState() { return state; }
public void setState(String state) { this.state = state; }
public boolean isDelete() { return delete; }
public void setDelete(boolean delete) { this.delete = delete; }
}[/code]
CustomerBean
[code]package com.corejsf;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.faces.component.UIParameter;
import javax.faces.event.ActionEvent;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
import javax.sql.DataSource;
public class CustomerBean {
private Connection conn;
private Name name;
public Name getName() { return name; }
public void setName(Name name) {this.name = name; }
public void open() throws SQLException, NamingException {
if (conn != null) return;
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(“java:comp/env/jdbc/mydb”);
conn = ds.getConnection();
}
public Result getAll() throws SQLException, NamingException {
try {
open();
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery(“SELECT * FROM Customers”);
return ResultSupport.toResult(result);
} finally {
close();
}
}
public void deleteRow (ActionEvent event){
UIParameter parameter = (UIParameter) event.getComponent().findComponent(“excluir”);
Name name = (Name)parameter.getValue();
System.out.println("String: " + name.getName());
}
public void close() throws SQLException {
if (conn == null) return;
conn.close();
conn = null;
}
}[/code]
ao chamar o método deleteRow (através do link “excluir” na minha jsp) o seguinte erro surge:
SEVERE: ‘java.lang.ClassCastException’ when invoke action listener ‘#{customer.deleteRow}’
Porém, imprime normalmente os dados da linha selecionada na tabela ao implementar o método deleteRow da seguinte forma:
public void deleteRow (ActionEvent event){
UIParameter parameter = (UIParameter) event.getComponent().findComponent("excluir");
String name = parameter.getValue().toString();
System.out.println("String: " + name);
}
Alguma dica!?!?!?
Desde já agradeço!