正在获取列表中项目的id<;对象>;在JSF中

正在获取列表中项目的id<;对象>;在JSF中,jsf,jsf-2,managed-bean,Jsf,Jsf 2,Managed Bean,我不知道当单击表单按钮时,应该采用什么方法以及如何开始编码以获取特定对象项的id 显示的产品Id值是我创建的产品表的主键。我来自Swing编程,在Swing中,我可以轻松使用JLabel.getText()获取屏幕截图上显示的产品ID1,4,5,6。但是我想它与JSF不同 此外,这些对象值包含在ui:repeat循环中 frames.xhtml <ui:repeat value="#{frameBean.all}" var="f" varStatus="loop">

我不知道当单击表单按钮时,应该采用什么方法以及如何开始编码以获取特定对象项的
id

显示的产品Id值是我创建的产品表的主键。我来自Swing编程,在Swing中,我可以轻松使用
JLabel.getText()
获取屏幕截图上显示的产品ID
1,4,5,6
。但是我想它与JSF不同

此外,这些对象值包含在
ui:repeat
循环中

frames.xhtml

<ui:repeat value="#{frameBean.all}" var="f" varStatus="loop">
            <h:outputText escape="false" rendered="#{loop.index % 3 == 0}" />
            <div >
                <div class="col-sm-6 col-md-3">
                    <div class="thumbnail clearfix">
                        <img src="..." alt="frame image placeholder" width="240" height="180"/>
                            <div class="caption">
                                <p>
                                    <h:outputLabel>Product ID: </h:outputLabel>
                                    <h:outputText value="#{f.product_id}"/>
                                </p>
                                <p><h:outputLabel value="#{f.name}"/></p>
                                <p><h:outputText value="#{f.description}"/></p>
                                <p>
                                    <h:panelGroup rendered="#{login.userRole eq 'customer' or login.userRole eq null}">
                                        <a href="#" class="btn btn-primary pull-right" role="button">Add To Cart</a> 
                                    </h:panelGroup>
                                </p>
                            </div>
                    </div>
                </div>
            </div>
            <h:outputText escape="false" rendered="#{loop.last or (loop.index + 1) % 3 == 0}" />
        </ui:repeat>
为了获得框架的产品Id,我考虑创建一个
addToCart(int-aProductId)
方法。它需要
一个ProductID
参数


谢谢。

您可以使用f:param组件存储产品id

<p>
    <h:outputLabel>Product ID: </h:outputLabel>
    <h:outputText value="#{f.product_id}"/>
    <f:param name="productId" value=""#{f.product_id}""></f:param>
</p>

您需要使用
ui:repeat
var
属性。在支持bean中对方法进行编码addToCart(框架f)

当执行单击操作时,需要从xhtml调用此方法。 大概是这样的:-

这里传递给方法的参数是
ui:repeat
var
属性,该属性用于唯一标识传递给
ui:repeat
的元素列表中的每个元素


希望这能解决您的问题。

Offtopic:不要在Getter中做任何工作:
<p>
    <h:outputLabel>Product ID: </h:outputLabel>
    <h:outputText value="#{f.product_id}"/>
    <f:param name="productId" value=""#{f.product_id}""></f:param>
</p>
String propertyId = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
                .get("productId");
public void addToCart(Frame pFrameAdded){
    //Do your operations over the frame added. 
}