Java 在JSF中重新呈现属性

Java 在JSF中重新呈现属性,java,jsf,richfaces,Java,Jsf,Richfaces,我有如下表格: <h:form id="x" prependId="false"> <h:dataTable id="v" value="#{userBean.cdManagerCollection}" var="cd" border="1"> <f:facet name="header"> Test Table </f:facet>

我有如下表格:

<h:form id="x" prependId="false">

      <h:dataTable id="v" value="#{userBean.cdManagerCollection}" var="cd" 
         border="1">

            <f:facet name="header">
                Test Table 
            </f:facet>
            <h:column>
                <f:facet name="header">
                    <h:outputText value="Name" />
                </f:facet>
                <h:inputText id="title" value="#{cd.title}"  />
            </h:column>                                                     
        </h:dataTable>

        <input type="hidden" id='btnName' name="btnName" value="Apply"/>
        <a4j:commandButton  id="btn" value="SUBMIT" action="#{userBean.processCD}" reRender="x"/>

</h:form>

试验台
我的问题是,当我使用a4j:command按钮提交表单,然后重新呈现表单时,请求参数(在本例中是隐藏的btnName)是否可以访问?(是指通过facescontext环境变量?)


基本上,我需要在基于请求参数返回${userBean.cdManagerCollection}时决定数据

如果您从
userBean
中读取
btnName
的参数,您的
userBean
中已经有了该参数:

<input type="hidden" id="btnName" name="btnName" value="#{userBean.btnParameter}" />

如果
元素的值当然可以作为HTTP请求的属性使用。换句话说,该参数将作为字符串显示在动作方法
userBean.processCD
中,通过调用:

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("btnName");
如果您想采用我强烈推荐的JSF方法,可以将
标记的
属性绑定到bean属性,这样JSF就可以自己进行输入转换(验证、转换、属性设置等):

<h:inputHidden id="btnName" value="#{userBean.btnName}"/>

不幸的是,这不会设置托管bean的属性,它只会在初始页面加载期间通过读取属性预填充隐藏的输入。这与OP的问题无关,这与你正在做的相反。
private String btnName;//getter+setter