在JSF中使用绑定属性时组件ID生成逻辑?

时间:2016-10-14 11:35:28

标签: jsf jsf-2

我在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";
}

0 个答案:

没有答案