gpt4 book ai didi

java - 我无法更改我的 selectOneMenu

转载 作者:行者123 更新时间:2023-12-02 07:34:58 24 4
gpt4 key购买 nike

我尝试加载 selectOneMenu 并给出以下异常:java.lang.IllegalStateException:提交响应后无法创建 session 。我有 xhtml:

<h:outputText value="Nome:" />
<p:selectOneMenu value="" id="nome" >
<f:selectItem itemValue="#{solicitarPortabilidadeBean.listaDoadora}" var="doadora" itemLabel="#{doadora.nomeOperadora}"/>
</p:selectOneMenu>

bean :

@ViewScoped
@ManagedBean
public class SolicitarPortabilidadeBean implements Serializable {

private static final long serialVersionUID = 1L;
private List<Operadora> listaDoadora = null;
private Operadora operadora;
//getters and setters

@EJB
private ConsultasSpnService consultaOp;

public List<Operadora> getListaDoadora() {

if (listaDoadora == null) {

listaDoadora = new ArrayList<Operadora>();
listaDoadora = consultaOp.listarOp();

}

return listaDoadora;
}

public void setListaDoadora(List<Operadora> listaDoadora) {
this.listaDoadora = listaDoadora;
}

public Operadora getOperadora() {
return operadora;
}

public void setOperadora(Operadora operadora) {
this.operadora = operadora;
}

public List<Eot> getListaEot() {
return listaEot;
}

public void setListaEot(List<Eot> listaEot) {
this.listaEot = listaEot;
}

public Eot getEot() {
return eot;
}

public void setEot(Eot eot) {
this.eot = eot;
}

public ConsultasSpnService getConsultaOp() {
return consultaOp;
}

public void setConsultaOp(ConsultasSpnService consultaOp) {
this.consultaOp = consultaOp;
}

}

Operadora 类:

public class Operadora {
private String srvprovid = null;
private String nomeOperadora = null;
private String indicadorFuncoes = null;
private String funcaoSuporte = null;
private String tipoTempReceptora = null;
private String tipoTempDoadora = null;
private String horaTrabSuportado = null;
private Long qtdMaximaTn = null;
private String tipoServico = null;
//getters and setters
public String getSrvprovid() {
return srvprovid;
}
public void setSrvprovid(String srvprovid) {
this.srvprovid = srvprovid;
}
public String getNomeOperadora() {
return nomeOperadora;
}
public void setNomeOperadora(String nomeOperadora) {
this.nomeOperadora = nomeOperadora;
}
public String getIndicadorFuncoes() {
return indicadorFuncoes;
}
public void setIndicadorFuncoes(String indicadorFuncoes) {
this.indicadorFuncoes = indicadorFuncoes;
}
public String getFuncaoSuporte() {
return funcaoSuporte;
}
public void setFuncaoSuporte(String funcaoSuporte) {
this.funcaoSuporte = funcaoSuporte;
}
public String getTipoTempReceptora() {
return tipoTempReceptora;
}
public void setTipoTempReceptora(String tipoTempReceptora) {
this.tipoTempReceptora = tipoTempReceptora;
}
public String getTipoTempDoadora() {
return tipoTempDoadora;
}
public void setTipoTempDoadora(String tipoTempDoadora) {
this.tipoTempDoadora = tipoTempDoadora;
}
public String getHoraTrabSuportado() {
return horaTrabSuportado;
}
public void setHoraTrabSuportado(String horaTrabSuportado) {
this.horaTrabSuportado = horaTrabSuportado;
}
public Long getQtdMaximaTn() {
return qtdMaximaTn;
}
public void setQtdMaximaTn(Long qtdMaximaTn) {
this.qtdMaximaTn = qtdMaximaTn;
}
public String getTipoServico() {
return tipoServico;
}
public void setTipoServico(String tipoServico) {
this.tipoServico = tipoServico;
}

我知道错误是在 xhtml 中调用 bean 时出现的,但我尝试了我所知道的一切。谁能帮我吗?

谢谢!!!

最佳答案

除了代码中的严重逻辑错误之外,在渲染过程中应该不会抛出任何异常,当然不是特别提到的异常,

IllegalStateException: Cannot create a session after the response has been committed

您的具体问题很可能是由 bug 引起的Mojarra 中已在 Mojarra 2.1.8 中修复。当在相对较大的 JSF 页面中“较晚”首次引用 View 作用域或 session 作用域 bean(在响应提交很久之后)时,就会出现此错误。

View 和 session 作用域的 Bean 需要存储在 HTTP session 中。为此,需要首先创建 HTTP session (如果尚未完成的话)(例如首次请求)。为此,需要首先将 cookie 添加到 HTTP 响应 header 中。为此,响应根本不应该发送给客户端。默认响应缓冲区大小通常为 2KB,因此如果页面大于 2KB,并且在第一个 2KB 之后第一次引用 View 或 session 作用域 bean,那么您将得到如下结果异常。

至少升级到 Mojarra 2.1.8(2.1.13 已经是 currently),这个问题应该会消失。

另请参阅:

关于java - 我无法更改我的 selectOneMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394152/

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