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");
无法获取,因为id
等于promo
,但前缀为前缀,看起来像j_idt40:promo
如何处理这种情况?
我需要key
获取项目。我想,那个密钥(id
中的inputhidden
)应该是单一的。我应该只依赖promo
值。
答案 0 :(得分: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;
无需从请求参数映射中手动获取它。