3

我有一个如下表格:

<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} 时决定数据。

4

2 回答 2

1

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

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("btnName");

如果您想采用我强烈推荐的 JSF 方法,您可以将标记的value属性绑定<h:inputHidden>到 bean 属性,以便 JSF 可以自己进行输入转换(验证、转换、属性设置等):

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

具有托管 bean 的属性:

private String btnName;//getter+setter
于 2013-03-21T17:07:58.113 回答
-1

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

<input type="hidden" id="btnName" name="btnName" value="#{userBean.btnParameter}" />
于 2013-03-21T08:26:38.087 回答