org.primefaces.event.RowEditEvent无法强制转换为我自己的对象

时间:2016-07-21 16:44:55

标签: jsf primefaces datatable classcastexception roweditor

我希望在数据库中保存数据表的更改,但出现异常:java.lang.String无法强制转换为jpa.TcamposEncuesta。我不明白。这是我的ManagedBean的一部分,它扩展了类TcamposEncuesta。

public void onEditRow(RowEditEvent event){
    try {    
        TcamposEncuesta tobj = (TcamposEncuesta)event.getObject();
        this.setIdcamposEncuesta(tobj.getIdcamposEncuesta());
        this.setNombre(((TcamposEncuesta) event.getObject()).getNombre());
        this.setAmplitud(((TcamposEncuesta) event.getObject()).getAmplitud());
        Properties pr = this.actualizarInsertar();
        String id = pr.getProperty("ID");
        addMessage("Ha modificado a: " + id);
    } catch(Exception e){
        addMessage(row+ "Error: " + e.getMessage());
    }
}

通过任何测试,我在两种类型的投射中都发现了错误。

这是我的.xhtml,我在datascroller中放了一个数据表,这很有效。

 <h:form id="form">
        <p:growl id="msgs" showDetail="true"/>
        <p:dataScroller id="idScroller" value="#{mbCamposEncuesta.listCamp}" var="campoEnc" chunkSize="2">
            <!-- <f:facet name="header">
                Scroll para cargar más elementos
            </f:facet> -->
            <f:facet name="loader">          
                <p:commandButton type="button" value="Cargar más" icon="fa fa-angle-double-down" />
            </f:facet> 
            <p:dataTable id="idDataTable" editable="true" value="campoEnc" styleClass="dTable">
                <p:ajax event="rowEdit" listener="#{mbCamposEncuesta.onEditRow}" update=":form:msgs"/>
                    <!-- <p:ajax event="rowEditCancel"   /> -->

                    <p:column>
                    <p:cellEditor>
                        <f:facet name="output" ><h:outputText value="#{campoEnc.idcamposEncuesta}" /></f:facet>
                        <f:facet name="input" ><p:inputText value="#{campoEnc.idcamposEncuesta}" disabled="true" /></f:facet> 
                    </p:cellEditor> 
                    </p:column>

                    <p:column>
                    <p:cellEditor >
                        <f:facet name="output" ><h:outputText value="#{campoEnc.nombre}" /></f:facet>
                        <f:facet name="input" ><p:inputText value="#{campoEnc.nombre}" /></f:facet>
                    </p:cellEditor>
                    </p:column>

                    <p:column>
                    <p:cellEditor>
                        <f:facet name="output"><h:outputLabel value="#{campoEnc.amplitud}" /></f:facet>
                        <f:facet name="input"><p:inputNumber value="#{campoEnc.amplitud}" /></f:facet>
                    </p:cellEditor>
                    </p:column>

                    <p:column>
                    <p:cellEditor>
                        <f:facet name="output" ><h:outputText value="#{campoEnc.script}" /></f:facet>
                        <f:facet name="input" ><p:inputText value="#{campoEnc.script}" disabled="true" /></f:facet> 
                    </p:cellEditor> 
                    </p:column>

                    <p:column>
                    <p:cellEditor >
                        <f:facet name="output" ><h:outputText value="#{campoEnc.tipoCampo}" /></f:facet>
                        <f:facet name="input" ><p:inputText value="#{campoEnc.tipoCampo}" /></f:facet>
                    </p:cellEditor>
                    </p:column>

                    <p:column>
                    <p:cellEditor>
                        <f:facet name="output"><h:outputLabel value="#{campoEnc.idlista}" /></f:facet>
                        <f:facet name="input"><p:inputNumber value="#{campoEnc.idlista}" /></f:facet>
                    </p:cellEditor>
                    </p:column>

                    <p:column style="width:32px">
                        <p:rowEditor />
                    </p:column>
                </p:dataTable>
        </p:dataScroller>
    </h:form>

筹码:

java.lang.ClassCastException: java.lang.String cannot be cast to jpa.TcamposEncuesta
at com.beans.jsfprograma.MbCamposEncuesta.onEditRow(MbCamposEncuesta.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processArgListener(AjaxBehaviorListenerImpl.java:79)
at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:63)
at org.primefaces.event.AbstractAjaxBehaviorEvent.processListener(AbstractAjaxBehaviorEvent.java:38)
at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:804)
at javax.faces.component.UIData.broadcast(UIData.java:1086)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

Stack:java.lang.ClassCastException:java.lang.String无法强制转换为jpa.TcamposEncuesta     在com.beans.jsfprograma.MbCamposEncuesta.onEditRow(MbCamposEncuesta.java:100)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     在org.apache.el.parser.AstValue.invoke(AstValue.java:247)     at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)     at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)     at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processArgListener(AjaxBehaviorListenerImpl.java:79)     at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:63)     at org.primefaces.event.AbstractAjaxBehaviorEvent.processListener(AbstractAjaxBehaviorEvent.java:38)     在javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)     在javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:804)     在javax.faces.component.UIData.broadcast(UIData.java:1086)     在javax.faces.component.UIData.broadcast(UIData.java:1108)     在javax.faces.component.UIData.broadcast(UIData.java:1108)     在javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)     在javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)     at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)     在com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)     在com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)     在javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)     在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)     在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)     在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)     在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)     在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)     at or or or or or or or or or or or or or or or or or     在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)     在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)     在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)     在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)     在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)     在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)     在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)     在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)     在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)     在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)     at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673)     在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)     在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)     在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)     at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)     在java.lang.Thread.run(Thread.java:745)

这是我的目标:

package jpa;

import java.io.Serializable;
import java.util.Date;
import java.util.Properties;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Miguel Morales
 */
@Entity
@Table(name = "TCAMPOS_ENCUESTA", catalog = "", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "TcamposEncuesta.findAll", query = "SELECT t FROM TcamposEncuesta t"),
    @NamedQuery(name = "TcamposEncuesta.findByIdcamposEncuesta", query = "SELECT t FROM TcamposEncuesta t WHERE t.idcamposEncuesta = :idcamposEncuesta"),
    @NamedQuery(name = "TcamposEncuesta.findByNombre", query = "SELECT t FROM TcamposEncuesta t WHERE t.nombre = :nombre"),
    @NamedQuery(name = "TcamposEncuesta.findByTipoCampo", query = "SELECT t FROM TcamposEncuesta t WHERE t.tipoCampo = :tipoCampo"),
    @NamedQuery(name = "TcamposEncuesta.findByAmplitud", query = "SELECT t FROM TcamposEncuesta t WHERE t.amplitud = :amplitud"),
    @NamedQuery(name = "TcamposEncuesta.findByIdlista", query = "SELECT t FROM TcamposEncuesta t WHERE t.idlista = :idlista"),
    @NamedQuery(name = "TcamposEncuesta.findByFechaCreacion", query = "SELECT t FROM TcamposEncuesta t WHERE t.fechaCreacion = :fechaCreacion")})
public class TcamposEncuesta extends Statement implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "IDCAMPOS_ENCUESTA", nullable = false)
    private Integer idcamposEncuesta = 0;
    @Size(max = 10)
    @Column(name = "NOMBRE", length = 10)
    private String nombre;
    @Lob
    @Size(max = 2147483647)
    @Column(name = "SCRIPT", length = 2147483647)
    private String script;
    @Size(max = 1)
    @Column(name = "TIPO_CAMPO", length = 1)
    private String tipoCampo;
    @Column(name = "AMPLITUD")
    private Integer amplitud;
    @Column(name = "IDLISTA")
    private Integer idlista;
    @Basic(optional = false)
    @NotNull
    @Column(name = "FECHA_CREACION", nullable = true)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCreacion;


    public TcamposEncuesta() {
    }

    public TcamposEncuesta(Integer idcamposEncuesta) {
        this.idcamposEncuesta = idcamposEncuesta;
    }

    public TcamposEncuesta(Integer idcamposEncuesta, Date fechaCreacion) {
        this.idcamposEncuesta = idcamposEncuesta;
        this.fechaCreacion = fechaCreacion;
    }

    public Integer getIdcamposEncuesta() {
        return idcamposEncuesta;
    }

    public void setIdcamposEncuesta(Integer idcamposEncuesta) {
        this.idcamposEncuesta = idcamposEncuesta;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getScript() {
        return script;
    }

    public void setScript(String script) {
        this.script = script;
    }

    public String getTipoCampo() {
        return tipoCampo;
    }

    public void setTipoCampo(String tipoCampo) {
        this.tipoCampo = tipoCampo;
    }

    public Integer getAmplitud() {
        return amplitud;
    }

    public void setAmplitud(Integer amplitud) {
        this.amplitud = amplitud;
    }

    public Integer getIdlista() {
        return idlista;
    }

    public void setIdlista(Integer idlista) {
        this.idlista = idlista;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }
}

0 个答案:

没有答案