在 JSF 中获取列表 <object> 中的项目 ID
Getting id of item in list<object> in JSF
我不知道应该使用什么方法以及如何开始编码,以便在单击表单按钮时获取特定对象项的 id
。
显示的 产品 ID 值是我创建的 table 产品的 主键 。我来自 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>
当然,我可以使用 f.product_Id
,但是如果单击 添加到购物车 按钮,我如何才能获得特定的 ID?
这是包含 getAll()
帧方法的实现
public List<Frame> getAll() throws SQLException {
List<Frame> list = new ArrayList<>();
PreparedStatement ps = null;
try {
String SQL = "select product_id, name, description, price_per_sqft, material from product where isFrame = 1";
ps = con.prepareStatement(SQL);
//get customer data from database
ResultSet result = ps.executeQuery();
while (result.next()) {
Frame frame = new Frame();
frame.setProduct_id(result.getInt("product_id"));
frame.setName(result.getString("name"));
frame.setDescription(result.getString("description"));
frame.setPrice_per_sqft(result.getDouble("price_per_sqft"));
frame.setMaterial(result.getString("material"));
//store all data into a List
list.add(frame);
}
} catch (SQLException | HeadlessException e) {
e.printStackTrace();
} finally {
try {
con.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
为了获取框架的产品 ID,我正在考虑创建一个 addToCart(int aProductId)
方法。它将需要 aProductId
个参数。
谢谢。
您可以使用 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>
稍后在 bean 中,您可以使用 FacesContext
获取值
String propertyId = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
.get("productId");
您需要使用 ui:repeat
的 var
属性。在支持 bean addToCart(Frame f)
.
中编写一个方法
public void addToCart(Frame pFrameAdded){
//Do your operations over the frame added.
}
执行点击操作时,需要从您的 xhtml 调用此方法。
是这样的:-
<a href="#{frameBean.addToCart(f)}" class="btn btn-primary pull-right" role="button">Add To Cart</a>
这里传递给方法的参数是ui:repeat
的var
属性,用于唯一标识传递给ui:repeat
的元素列表中的每个元素。
希望这能解决您的问题。
我不知道应该使用什么方法以及如何开始编码,以便在单击表单按钮时获取特定对象项的 id
。
显示的 产品 ID 值是我创建的 table 产品的 主键 。我来自 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>
当然,我可以使用 f.product_Id
,但是如果单击 添加到购物车 按钮,我如何才能获得特定的 ID?
这是包含 getAll()
帧方法的实现
public List<Frame> getAll() throws SQLException {
List<Frame> list = new ArrayList<>();
PreparedStatement ps = null;
try {
String SQL = "select product_id, name, description, price_per_sqft, material from product where isFrame = 1";
ps = con.prepareStatement(SQL);
//get customer data from database
ResultSet result = ps.executeQuery();
while (result.next()) {
Frame frame = new Frame();
frame.setProduct_id(result.getInt("product_id"));
frame.setName(result.getString("name"));
frame.setDescription(result.getString("description"));
frame.setPrice_per_sqft(result.getDouble("price_per_sqft"));
frame.setMaterial(result.getString("material"));
//store all data into a List
list.add(frame);
}
} catch (SQLException | HeadlessException e) {
e.printStackTrace();
} finally {
try {
con.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
为了获取框架的产品 ID,我正在考虑创建一个 addToCart(int aProductId)
方法。它将需要 aProductId
个参数。
谢谢。
您可以使用 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>
稍后在 bean 中,您可以使用 FacesContext
获取值String propertyId = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
.get("productId");
您需要使用 ui:repeat
的 var
属性。在支持 bean addToCart(Frame f)
.
public void addToCart(Frame pFrameAdded){
//Do your operations over the frame added.
}
执行点击操作时,需要从您的 xhtml 调用此方法。
是这样的:-
<a href="#{frameBean.addToCart(f)}" class="btn btn-primary pull-right" role="button">Add To Cart</a>
这里传递给方法的参数是ui:repeat
的var
属性,用于唯一标识传递给ui:repeat
的元素列表中的每个元素。
希望这能解决您的问题。