gpt4 book ai didi

jsf - p :selectOneMenu does not set value in bean

转载 作者:行者123 更新时间:2023-12-03 21:25:57 25 4
gpt4 key购买 nike

快速提问。在使用 SelectOneMenu 时,我以前从未发生过这种情况。这是我的代码。

<h:outputLabel for="listaRegiones" value="Región: " />
<p:selectOneMenu id="listaRegiones" value="#{nuevaProvincia.regionSelect}" required="true">
<f:selectItems value="#{nuevaProvincia.regiones}" />
</p:selectOneMenu>
<p:message for="listaRegiones" />

这是我的支持 bean 。
@ManagedBean(name="nuevaProvincia")
@ViewScoped
public class nuevaProvincia implements Serializable {

public static final long serialVersionUID = 1L;

public nuevaProvincia() throws DAOException {
this.provincia = new Provincia();
this.regiones = new ArrayList<SelectItem>();
ArrayList<Region> regs = new ArrayList<Region>();
try
{
regs = Region.obtenerRegiones();
}
catch(DAOException e)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Hubo un error: "+e.getMessage(), "Hubo un error: "+e.getMessage()));
}
if(regs.size()>0)
{
for(Region r : regs)
{
SelectItem item = new SelectItem(r.getCodigo(), r.getNombre());
regiones.add(item);
}
this.regionSelect = regs.get(0).getCodigo();
}
else
this.regionSelect = "";
}

public void verificaProvincia() throws DAOException {
provincia.getRegion().setCodigo(regionSelect);
try
{
if(this.provincia.estaCreado())
FacesContext.getCurrentInstance().addMessage("frmIngProvincia:provCodigo", new FacesMessage(FacesMessage.SEVERITY_WARN, "El código de provincia ingresado ya existe.", "El código de provincia ingresado ya existe."));
else
FacesContext.getCurrentInstance().addMessage("frmIngProvincia:provCodigo", new FacesMessage(FacesMessage.SEVERITY_INFO, "El código de provincia ingresado no existe.", "El código de provincia ingresado no existe."));
}
catch(DAOException e)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Hubo un error: "+e.getMessage(), "Hubo un error: "+e.getMessage()));
}
}

public void insertaProvincia() throws DAOException {
try
{
provincia.getRegion().setCodigo(regionSelect);
provincia.guardar();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Provincia ingresada con éxito", "Provincia ingresada con éxito"));
}
catch(DAOException e)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Hubo un error: "+e.getMessage(), "Hubo un error: "+e.getMessage()));
throw e;
}
}

//Getters and setters for everything

//Privados
private Provincia provincia;
private String regionSelect;
private List<SelectItem> regiones;
}

问题如下:每当我更改 selectonemenu 中的值时,未设置支持 bean 中的值(尽管我确实有 regionSelect 的 setter )。为什么会发生这种情况?

最佳答案

我发现了错误,这是......非常奇怪和间接的。我在 SelectOneMenu 中添加了以下行:

<p:ajax event="change" update="@this" />

现在它工作得很好。

关于jsf - p :selectOneMenu does not set value in bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com