Java 我无法更改SelectOne功能表

Java 我无法更改SelectOne功能表,java,jsf,primefaces,Java,Jsf,Primefaces,我正在尝试加载SelectOne菜单,并出现以下异常:java.lang.IllegalStateException:提交响应后无法创建会话。 我有xhtml: <h:outputText value="Nome:" /> <p:selectOneMenu value="" id="nome" > <f:selectItem itemValue="#{solicitarPortabilidadeBean.listaDoadora}" var="doador

我正在尝试加载SelectOne菜单,并出现以下异常:
java.lang.IllegalStateException:提交响应后无法创建会话
。 我有xhtml:

<h:outputText value="Nome:" />
 <p:selectOneMenu value="" id="nome"  >
   <f:selectItem itemValue="#{solicitarPortabilidadeBean.listaDoadora}" var="doadora" itemLabel="#{doadora.nomeOperadora}"/>                
 </p:selectOneMenu>
我知道错误在于调用xhtml内部的bean,但是我尝试了我所知道的一切。有人能帮我吗


谢谢你

首先,您的代码有一个语法问题

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

您没有将value属性绑定到支持bean。另外还有非法国家例外 当你已经提交了回复,意味着写了一些东西,提交了它,然后 然后将控件传递给另一个servlet或其他东西。在查看正确的ManagedBean之前 代码,很难判断你错在哪里。您的列表是如何填充的。请邮寄 ManagedBean代码并尝试将value属性映射到某个ManagedBean属性。 嗯,,
Ben

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

IllegalStateException:在提交响应后无法创建会话

您的具体问题很可能是由Mojarra中的错误引起的,该错误已在Mojarra 2.1.8中修复。当一个视图范围的bean或会话范围的bean在一个相对较大的JSF页面中第一次“晚”引用时,在响应提交很久之后,这个bug就会显现出来

视图和会话范围的bean需要存储在HTTP会话中。为此,如果尚未创建HTTP会话(例如,首次请求),则需要首先创建HTTP会话。为此,首先需要将cookie放在HTTP响应头上。因此,响应根本不应该发送到客户端。默认响应缓冲区大小通常为2KB,因此,如果页面大于2KB,并且视图或会话范围的bean在第一段2KB之后第一次被引用,那么您将得到这个异常

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

另见:

当您应该使用
时,您正在使用
(请注意组件名称末尾的s)。我这样尝试,但没有成功:(我做了这个改变"将名为javax.faces.STATE_SAVING_METHOD和client值的上下文参数添加到web.xml。优点:除非您有会话范围的bean,否则根本不会创建会话。它还可以立即解决潜在的ViewExpiredException情况。缺点:网络带宽使用率增加。如果您使用部分状态保存,则imp但是act应该是最小的。”他给出了另一个例外:“java.io.NotSerializableException:br.com.cpmbraxis.ebt.model.gateway.Operadora”这是另一个问题。让它实现
Serializable
接口,就像异常消息试图提示你的那样。我添加了“公共类Operadora实现Serializable”{private static final long serialVersionUID=1L;”它停止了异常,但在不加载补偿的情况下继续,可能是什么?这是另一个问题。只需按右上角的
Ask Question
按钮。您当前的问题已得到回答。BarlusC我编辑此问题还是发布新问题?哪一个更好?谢谢您的帮助!
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;
    }
<h:outputText value="Nome:" />
 <p:selectOneMenu value="" id="nome"  >
   <f:selectItem itemValue="#{solicitarPortabilidadeBean.listaDoadora}" var="doadora" itemLabel="#{doadora.nomeOperadora}"/>                
 </p:selectOneMenu>