2013-03-21 64 views
3

我有一个表格象下面这样:重新呈现属性在JSF

<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提交表单:命令按钮,然后重新呈现相同的,确实请求参数( btnName在这种情况下是隐藏的),是否可以访问? (是指通过facescontext环境变量?)

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

回答

1

如果您<input>元素当然可作为HTTP请求的属性值。换句话说,该参数将作为你action方法userBean.processCD一个String可见通过将呼叫:

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 
+0

感谢您的回答 – Atul 2013-03-27 13:04:32

+0

不客气。 – skuntsel 2013-03-27 14:03:42

-1

如果你读btnNameuserBean参数你有一个参数已经在你的userBean

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

不幸的是,它不会设置托管bean的属性,它只会在初始页面加载期间通过读取属性预填充隐藏的输入。它与OP的问题无关,与你正在做的事情相反。 – skuntsel 2013-03-21 17:14:18