下午好。我有一个运算符列表,我初始化如下。
@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;
}
}
列表正常初始化,我使用它没有任何问题,但我想根据以下数据库查询初始化它。
SELECT * FROM `operarios` WHERE `ESTADO_OPERARIO` = 1 AND `TIPO_ESTADO_OPERARIO` = 1;
在我的JPQL查询中如下。
@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);
}
并且已经修改了我的bean。
@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;
}
}
在我看来,我将其称为如下
<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"/>
但我不会初步告诉我,我做错了请我需要你的帮助。感谢
答案 0 :(得分:0)
根据您发布的代码,不会调用“inicializarLista”方法。您有一个托管bean:
@PostConstruct
public void inicializarBean() {
operariosList = new ArrayList<>();
}
但您正在加载列表:
public void inicializarLista()
请致电inicializarLista()
@PostConstruct
方法:
@PostConstruct
public void inicializarBean() {
//This step is not necessary any more!
operariosList = new ArrayList<>();
inicializarLista();
}