1

JSF:

<h:form>
    <h:inputHidden id="promo" value="promo-motopair"/>
    <h:commandButton value="#{m.buy}" action="#{showProducts.buy}"/>
</h:form>


<h:form>
    <h:inputHidden id="promo" value="promo-northduck"/>
    <h:commandButton value="#{m.buy}" action="#{showProducts.buy}"/>
</h:form>

Bean,获得点击的 id:

String promo = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("promo");

无法得到它,因为idis equal promo,但前面有前缀,看起来像j_idt40:promo

如何处理这种情况?

我需要通过key. 我想,那个键(id在 中inputhidden)应该是单个的。我应该只依赖promo价值。

4

1 回答 1

3

不要使用<h:inputHidden>. 它不适合您的特定功能要求。只需使用标准 HTML <input type="hidden">

<h:form>
    <input type="hidden" name="promo" value="promo-motopair"/>
    <h:commandButton value="#{m.buy}" action="#{showProducts.buy}"/>
</h:form>

<h:form>
    <input type="hidden" name="promo" value="promo-northduck"/>
    <h:commandButton value="#{m.buy}" action="#{showProducts.buy}"/>
</h:form>

顺便说一下,它在请求范围的 bean 中也可以通过

@ManagedProperty("#{param.promo}")
private String promo;

无需手动从请求参数映射中抓取。

于 2012-05-25T13:47:37.123 回答