我有如下表格:
<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} 时决定数据。
最佳答案
如果您的 <input>
值元素当然可以作为 HTTP 请求的属性使用。换句话说,该参数在您的操作方法中将作为字符串可见 userBean.processCD
通过调用:
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("btnName");
如果您想采用我强烈推荐的 JSF 方法,您可以绑定(bind) value
<h:inputHidden>
的属性标记到 bean 属性,以便 JSF 可以自己进行输入转换(验证、转换、属性设置等):
<h:inputHidden id="btnName" value="#{userBean.btnName}"/>
使用托管 bean 的属性:
private String btnName;//getter+setter
关于java - JSF 中的重新渲染属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542517/