我在UI中有以下代码
<h:selectOneMenu id="state_radio"
binding="#{createBean.selectedSpecState}"
value="#{createBean.specVO.specState}">
<f:selectItems value="#{createBean.states}" />
</h:selectOneMenu>
正如你可以检查上面的代码我已经给了SelectOneMenu
组件的id以及这个组件是用bean变量绑定但是goind到另一个页面然后回到这个页面它给出了下面的异常
17:00:40,401严重 [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost / 127.0.0.1:8080-2)错误渲染 查看[/pages/somePage.xhtml]:java.lang.IllegalStateException: 组件ID contentform:j_idt141:formForCreateLinkSpecs:j_idt172具有 已经在视图中找到了。
及以下是组件的生成输出或源代码
+ id:state_radio 键入:javax.faces.component.html.HtmlSelectOneMenu@5a4427a3 + id:j_idt172&lt; =============== 键入:javax.faces.component.UISelectItems@76fa848e + id:j_idt172&lt; =============== 键入:javax.faces.component.UISelectItems@3f6e615c + id:j_idt172&lt; =============== 键入:javax.faces.component.UISelectItems@450b624e + id:j_idt172&lt; =============== 键入:javax.faces.component.UISelectItems@60e00111 + id:j_idt172&lt; =============== 键入:javax.faces.component.UISelectItems@213b6823 + id:j_idt172&lt; =============== 输入:javax.faces.compon
现在,如果我删除binding
它没有抛出任何id异常。
现在使用binding
背后的原因是我的页面组件无法保留用户在从此页面转到其他页面并返回到同一页面时输入的值.Bean是session
被管理的豆。
有关设计的更新:
我有一个页面A.xhtml,其中我包含了另一个这样的页面
<a4j:outputPanel id="createPanel">
<rich:panel
rendered="#{bean.isCreatePanel()}">
<ui:insert name="createLinkTemplate">
<ui:include src="../pages/somePage.xhtml" />
</ui:insert>
</rich:panel>
</a4j:outputPanel>
现在A.xhtml
页面现在还可以从此页面保留somePage.xhtml
,其逻辑可以转到另一页并返回。
我在下面的代码中使用faces-redirect=true
public String navigateBack(){
return "pageName?faces-redirect=true";
}