JSF将表达式值传递给commandButton

时间:2009-08-27 17:57:32

标签: jsf

我正在尝试访问表达式$ result.id的值并使用该值并将其传递给bean操作commitBtn。我该怎么做呢。

<c:forEach items="${bean.results}" var="result">
  <fieldset>
    <legend>
      <b>Title:</b>
      ${result.id}
      <c:set var="Id" value="${result.id}" />
      <!-- this Id doesn't show as well, why -->
      <h:outputText value="#{Id}" binding="#{bean.Id_lbl}" id="iD_lbl" />

      <h:commandButton value="Commit" binding="#{bean.commitBtn}"
        id="commitBtn" action="#{bean.commitBtn}" />
    </legend>
...

2 个答案:

答案 0 :(得分:0)

使用&lt; f:param&gt;标记将值传递给操作。在操作中,您必须从requestMap获取param值

类似的东西:

<h:commandButton blah blah blah>
   <f:param name="resultId" value="${result.id}" />
</h:commandButton>

然后在行动代码中:

resultId = FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("resultId");

答案 1 :(得分:0)

某些人可能会建议f:param 在JSF 1.x中的h:commandButton中工作。请改用f:setPropertyActionListener

<h:commandButton value="Commit" binding="#{bean.commitBtn}" id="commitBtn" action="#{bean.commitBtn}">
    <f:setPropertyActionListener target="#{bean.resultId}" value="#{result.id}" />
</h:commandButton>

另请参阅this article以获取更多提示。