Jsf 基于JPA查询初始化列表?
下午好。我有一个操作符列表,初始化如下Jsf 基于JPA查询初始化列表?,jsf,jpa,Jsf,Jpa,下午好。我有一个操作符列表,初始化如下 @ManagedBean @ViewScoped public class TiemposBean implements Serializable { @EJB private OperariosFacade operariosFacade; private List<Operarios> operariosList; @PostConstruct public void inicializarBe
@ManagedBean
@ViewScoped
public class TiemposBean implements Serializable {
@EJB
private OperariosFacade operariosFacade;
private List<Operarios> operariosList;
@PostConstruct
public void inicializarBean() {
operariosList = operariosFacade.findAll();
}
public List<Operarios> getOperariosList() {
return operariosList;
}
public void setOperariosList(List<Operarios> operariosList) {
this.operariosList = operariosList;
}
}
@NamedQuery(name = "Operarios.findByNombreLista", query = "SELECT o FROM Operarios o WHERE o.idEstadoOperario = :idEstadoOperario AND o.tipoEstadoOperario = :tipoEstadoOperario"),
public void inicializarLista() {
String namedQuery = "Operarios.findByNombreLista";
Map<String, Object> parametros = new HashMap<>();
parametros.put("idEstadoOperario", 1);
parametros.put("tipoEstadoOperario", 1);
operariosList = operariosFacade.findByNamedQuery(namedQuery, parametros);
}
在我的JPQL查询中,如下所示
@ManagedBean
@ViewScoped
public class TiemposBean implements Serializable {
@EJB
private OperariosFacade operariosFacade;
private List<Operarios> operariosList;
@PostConstruct
public void inicializarBean() {
operariosList = operariosFacade.findAll();
}
public List<Operarios> getOperariosList() {
return operariosList;
}
public void setOperariosList(List<Operarios> operariosList) {
this.operariosList = operariosList;
}
}
@NamedQuery(name = "Operarios.findByNombreLista", query = "SELECT o FROM Operarios o WHERE o.idEstadoOperario = :idEstadoOperario AND o.tipoEstadoOperario = :tipoEstadoOperario"),
public void inicializarLista() {
String namedQuery = "Operarios.findByNombreLista";
Map<String, Object> parametros = new HashMap<>();
parametros.put("idEstadoOperario", 1);
parametros.put("tipoEstadoOperario", 1);
operariosList = operariosFacade.findByNamedQuery(namedQuery, parametros);
}
我构建的调用该查询的方法如下所示
@ManagedBean
@ViewScoped
public class TiemposBean implements Serializable {
@EJB
private OperariosFacade operariosFacade;
private List<Operarios> operariosList;
@PostConstruct
public void inicializarBean() {
operariosList = operariosFacade.findAll();
}
public List<Operarios> getOperariosList() {
return operariosList;
}
public void setOperariosList(List<Operarios> operariosList) {
this.operariosList = operariosList;
}
}
@NamedQuery(name = "Operarios.findByNombreLista", query = "SELECT o FROM Operarios o WHERE o.idEstadoOperario = :idEstadoOperario AND o.tipoEstadoOperario = :tipoEstadoOperario"),
public void inicializarLista() {
String namedQuery = "Operarios.findByNombreLista";
Map<String, Object> parametros = new HashMap<>();
parametros.put("idEstadoOperario", 1);
parametros.put("tipoEstadoOperario", 1);
operariosList = operariosFacade.findByNamedQuery(namedQuery, parametros);
}
public void inicializarLista(){
字符串namedQuery=“Operarios.findByNombreLista”;
Map parametros=newhashmap();
参数put(“idEstadoOperario”,1);
参数put(“tipoEstadoOperario”,1);
operariosList=operariosFacade.findByNamedQuery(namedQuery,ParameterOS);
}
还有我的豆子
@ManagedBean
@ViewScoped
public class TiemposBean implements Serializable {
@EJB
private OperariosFacade operariosFacade;
private List<Operarios> operariosList;
@PostConstruct
public void inicializarBean() {
operariosList = new ArrayList<>();
}
public List<Operarios> getOperariosList() {
return operariosList;
}
public void setOperariosList(List<Operarios> operariosList) {
this.operariosList = operariosList;
}
}
@ManagedBean
@视域
公共类TiempsBean实现了可序列化{
@EJB
私人运营商;
私人名单运营商;
@施工后
公共空间在阿拉伯联合酋长国(){
operariosList=新的ArrayList();
}
公共列表getOperatariosList(){
返回操作列表;
}
公共作废设置操作列表(列表操作列表){
this.operariosList=operariosList;
}
}
在我看来,我称之为
<p:outputLabel for="somOperario" value="Operario"/>
<p:selectOneMenu id="somOperario" value="#{tiemposBean.operarioSeleccionado}"
filter="true"
converter="operariosConverter">
<f:selectItem itemLabel="Seleccione uno"/>
<f:selectItems value="#{tiemposBean.operariosList}"
var="operarioVar"
itemValue="#{operarioVar}"
itemLabel="#{operarioVar.nombre}"
/>
</p:selectOneMenu>
<p:message for="somOperario" id="msg_somOperario"/>
但是我没有向我说明我做错了,我需要你的帮助。谢谢根据您发布的代码,不会调用“inicializarLista”方法。您有一个托管bean,其中包含:
@PostConstruct
public void inicializarBean() {
operariosList = new ArrayList<>();
}
请在@PostConstruct
内调用inicializarLista()
方法:
@PostConstruct
public void inicializarBean() {
//This step is not necessary any more!
operariosList = new ArrayList<>();
inicializarLista();
}
@PostConstruct
公共空间在阿拉伯联合酋长国(){
//这一步不再需要了!
operariosList=新的ArrayList();
inicializarLista();
}
我相信你可以缩小范围。。。查询是否运行?它还东西吗?是否调用了#{tiempsbean.operariosList}
?有人住吗?在99.9%的情况下,一个问题不是同时与jsf和jpa相关的(当然也不是mysql)。。。因此,请缩小范围,什么是调用您的inicializarLista方法来初始化列表?hi@Chris public void inicializarLista()在您修改的bean中,inicializarBean()
仅实例化一个空列表。正如C.P.O的回答所提到的,您需要填充列表。修改后的客户端代码从不要求调用服务方法inicializarLista()
。