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>

クリックされた ID を取得する Bean:

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 に答える