2013-03-21 87 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