Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 <;h:选择一个功能表>;不';t在bean上保存所选的值_Jsf 2_Selectonemenu - Fatal编程技术网

Jsf 2 <;h:选择一个功能表>;不';t在bean上保存所选的值

Jsf 2 <;h:选择一个功能表>;不';t在bean上保存所选的值,jsf-2,selectonemenu,Jsf 2,Selectonemenu,我对SelectOneMenu有问题。我这样写: <h:selectOneMenu id="listaEstados" styleClass="comboboxStyle" value="#{detalleSistemaBean.sistema.indEstado}" immediate="true"> <f:selectItems value="#{detalleSistemaBean.indEstados}" /&

我对SelectOneMenu有问题。我这样写:

<h:selectOneMenu id="listaEstados"
        styleClass="comboboxStyle" 
        value="#{detalleSistemaBean.sistema.indEstado}" 
        immediate="true">
    <f:selectItems value="#{detalleSistemaBean.indEstados}" />
</h:selectOneMenu>
<h:commandButton id ="SubmitModificar"
    value="Modificar"
    styleClass="botonPeque"
    action="#{detalleSistemaBean.modificaSistema}">
</h:commandButton>  


但是当我从列表“indEstado”中选择一个值并提交表单时,bean“sistema.indEstado”并没有改变。我已经看到bean属性在方法modificaSistema之前发生了变化,但是在这个方法中(我有一个数据库连接和一个sql语句),“sistema.indEstado”返回到其原始值。为什么会发生这种情况?我曾尝试使用valueChangeListener保存该值,这是可行的,但我想这不是一个简单的解决方案。

您可以尝试不进行设置吗

 immediate="true"

当您在getter方法中而不是在bean类的(post)构造函数中加载数据时,可能会发生这种情况

修复托管bean代码,使其在getter方法中除了返回属性之外,不做任何其他事情

也就是说,不要这样做

public Sistema getSistema() {
    return sistemaService.find(someSistemaId);
}
而是

private Sistema sistema;

@PostConstruct
public void init() {
    sistema = sistemaService.find(someSistemaId);
}

public Sistema getSistema() {
    return sistema;
}

谢谢你的评论,阿比。我已经试过了,但问题仍然存在。OP将该属性放在了输入组件上,而不是命令组件上。嗨,BalusC,我已经读过你关于JSF的相同文章。谢谢你的回答。嗯,我想做一个页面,在其中我可以进行修改并重写修改后的值。我已经尝试了您的解决方案,现在的问题是Bean atributes值没有出现在inputText中……显然,
@PostConstruct
方法没有被调用,或者给定示例中的
find()
方法返回了
null