javax.faces.component.UIComponentBase.validateId中的java.lang.IllegalArgumentException

时间:2010-09-25 19:54:38

标签: jsf jsf-2

异常

java.lang.IllegalArgumentException: partidosPK.idEquipo
at javax.faces.component.UIComponentBase.validateId(UIComponentBase.java:551)
at javax.faces.component.UIComponentBase.setId(UIComponentBase.java:366)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply        (ComponentTagHandlerDelegateImpl.java:168)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91)
at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:97)
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:172)

并继续......也 实体bean

private String ganador;
@Column(name = "fecha")
@Temporal(TemporalType.TIMESTAMP)
private Date fecha;
@Column(name = "golesEquipoGanador")
private Integer golesEquipoGanador;
@Column(name = "golesEquipoPerdedor")
private Integer golesEquipoPerdedor;
@Column(name = "perdedor")
private String perdedor;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "partidos")
private Collection<Goleadores> goleadoresCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "partidos")
private Collection<SancionesJugadores> sancionesJugadoresCollection;
@JoinColumns({
    @JoinColumn(name = "idCampeonato", referencedColumnName = "idCampeonato", insertable = false, updatable = false),
    @JoinColumn(name = "idPartido", referencedColumnName = "idEquipo", insertable = false, updatable = false)})
@ManyToOne(optional = false)
private EquiposPorCampeonato equiposPorCampeonato;

public Partidos() {
}

public Partidos(PartidosPK partidosPK) {
    this.partidosPK = partidosPK;
}

public Partidos(int idCampeonato, int idEquipo, int idPartido) {
    this.partidosPK = new PartidosPK(idCampeonato, idEquipo, idPartido);
}

public PartidosPK getPartidosPK() {
    return partidosPK;
}

public void setPartidosPK(PartidosPK partidosPK) {
    this.partidosPK = partidosPK;
}

public String getGanador() {
    return ganador;
}

public void setGanador(String ganador) {
    this.ganador = ganador;
}

public Date getFecha() {
    return fecha;
}

public void setFecha(Date fecha) {
    this.fecha = fecha;
}

public Integer getGolesEquipoGanador() {
    return golesEquipoGanador;
}

public void setGolesEquipoGanador(Integer golesEquipoGanador) {
    this.golesEquipoGanador = golesEquipoGanador;
}

public Integer getGolesEquipoPerdedor() {
    return golesEquipoPerdedor;
}

public void setGolesEquipoPerdedor(Integer golesEquipoPerdedor) {
    this.golesEquipoPerdedor = golesEquipoPerdedor;
}

public String getPerdedor() {
    return perdedor;
}

public void setPerdedor(String perdedor) {
    this.perdedor = perdedor;
}

public Collection<Goleadores> getGoleadoresCollection() {
    return goleadoresCollection;
}

public void setGoleadoresCollection(Collection<Goleadores> goleadoresCollection) {
    this.goleadoresCollection = goleadoresCollection;
}

public Collection<SancionesJugadores> getSancionesJugadoresCollection() {
    return sancionesJugadoresCollection;
}

public void setSancionesJugadoresCollection(Collection<SancionesJugadores> sancionesJugadoresCollection) {
    this.sancionesJugadoresCollection = sancionesJugadoresCollection;
}

public EquiposPorCampeonato getEquiposPorCampeonato() {
    return equiposPorCampeonato;
}

public void setEquiposPorCampeonato(EquiposPorCampeonato equiposPorCampeonato) {
    this.equiposPorCampeonato = equiposPorCampeonato;
}

@Override
public int hashCode() {
    int hash = 0;
    hash += (partidosPK != null ? partidosPK.hashCode() : 0);
    return hash;
}

@Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Partidos)) {
        return false;
    }
    Partidos other = (Partidos) object;
    if ((this.partidosPK == null && other.partidosPK != null) || (this.partidosPK != null && !this.partidosPK.equals(other.partidosPK))) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return "" + partidosPK + "";
}

}

相关的primaryKey entitybean

@Embeddable
public class PartidosPK implements Serializable {
@Basic(optional = false)
@Column(name = "idCampeonato")
private int idCampeonato;
@Basic(optional = false)
@Column(name = "idEquipo")
private int idEquipo;
@Basic(optional = false)
@Column(name = "idPartido")
private int idPartido;

public PartidosPK() {
}

public PartidosPK(int idCampeonato, int idEquipo, int idPartido) {
    this.idCampeonato = idCampeonato;
    this.idEquipo = idEquipo;
    this.idPartido = idPartido;
}

public int getIdCampeonato() {
    return idCampeonato;
}

public void setIdCampeonato(int idCampeonato) {
    this.idCampeonato = idCampeonato;
}

public int getIdEquipo() {
    return idEquipo;
}

public void setIdEquipo(int idEquipo) {
    this.idEquipo = idEquipo;
}

public int getIdPartido() {
    return idPartido;
}

public void setIdPartido(int idPartido) {
    this.idPartido = idPartido;
}

@Override
public int hashCode() {
    int hash = 0;
    hash += (int) idCampeonato;
    hash += (int) idEquipo;
    hash += (int) idPartido;
    return hash;
}

@Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof PartidosPK)) {
        return false;
    }
    PartidosPK other = (PartidosPK) object;
    if (this.idCampeonato != other.idCampeonato) {
        return false;
    }
    if (this.idEquipo != other.idEquipo) {
        return false;
    }
    if (this.idPartido != other.idPartido) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return "" + idCampeonato + ", " + idEquipo + ", " + idPartido + "";
}
}

最后但并非最不重要

@Entity
@Table(name = "equipos")
@NamedQueries({
@NamedQuery(name = "Equipos.findAll", query = "SELECT e FROM Equipos e"),
@NamedQuery(name = "Equipos.findByIdEquipo", query = "SELECT e FROM Equipos e WHERE e.idEquipo = :idEquipo"),
@NamedQuery(name = "Equipos.findByNombre", query = "SELECT e FROM Equipos e WHERE e.nombre = :nombre")})
public class Equipos implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idEquipo")
private Integer idEquipo;
@Basic(optional = false)
@Column(name = "nombre")
private String nombre;
@JoinColumn(name = "idSexo", referencedColumnName = "idSexo")
@ManyToOne(optional = false)
private Sexos idSexo;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idEquipo")
private Collection<Jugadores> jugadoresCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "equipos")
private Collection<EquiposPorCampeonato> equiposPorCampeonatoCollection;

public Equipos() {
}

public Equipos(Integer idEquipo) {
    this.idEquipo = idEquipo;
}

public Equipos(Integer idEquipo, String nombre) {
    this.idEquipo = idEquipo;
    this.nombre = nombre;
}

public Integer getIdEquipo() {
    return idEquipo;
}

public void setIdEquipo(Integer idEquipo) {
    this.idEquipo = idEquipo;
}

public String getNombre() {
    return nombre;
}

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

public Sexos getIdSexo() {
    return idSexo;
}

public void setIdSexo(Sexos idSexo) {
    this.idSexo = idSexo;
}

public Collection<Jugadores> getJugadoresCollection() {
    return jugadoresCollection;
}

public void setJugadoresCollection(Collection<Jugadores> jugadoresCollection) {
    this.jugadoresCollection = jugadoresCollection;
}

public Collection<EquiposPorCampeonato> getEquiposPorCampeonatoCollection() {
    return equiposPorCampeonatoCollection;
}

public void setEquiposPorCampeonatoCollection(Collection<EquiposPorCampeonato> equiposPorCampeonatoCollection) {
    this.equiposPorCampeonatoCollection = equiposPorCampeonatoCollection;
}

@Override
public int hashCode() {
    int hash = 0;
    hash += (idEquipo != null ? idEquipo.hashCode() : 0);
    return hash;
}

@Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Equipos)) {
        return false;
    }
    Equipos other = (Equipos) object;
    if ((this.idEquipo == null && other.idEquipo != null) || (this.idEquipo != null && !this.idEquipo.equals(other.idEquipo))) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return "" + nombre + "";
}

}

如果需要,可提供表格脚本


非常感谢。
是的西班牙语请耐心等待我! Equipos ==团队;
Partidos ==匹配;
Campeonatos ==锦标赛;

1 个答案:

答案 0 :(得分:2)

此异常与视图有关,而与模型无关。例外情况是告诉您已设置值为partidosPK.idEquipo的组件ID,如下所示:

<h:someComponent id="partidosPK.idEquipo">

但是,根据规则,此ID是非法的。它包含一个点.。将其删除或替换为_-。规则与HTML/CSS identifiers相同。

  

在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A1和更高,加上连字符( - )和下划线(_);它们不能以数字或连字符后跟数字开头。