У меня есть форма JSF, в которой нам нужно выбрать список продуктов (используя флажок).Продукты отображаются с использованием итерации c: forEach.Я храню детали каждого выбранного продукта в отдельном компоненте с именем BuyProduct.java.Я хочу, чтобы каждый выбранный компонент / продукт передавался атрибуту действия формы.Или есть какой-нибудь альтернативный способ реализовать это?
<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core"
xmlns:ui = "http://java.sun.com/jsf/facelets"
xmlns:c = "http://java.sun.com/jsp/jstl/core">
<h:head>
<h:title>Shop</h:title>
<h:outputStylesheet name="/css/products.css"></h:outputStylesheet>
</h:head>
<h:body>
<h:form id="productForm">
<c:forEach items="#{products}" var="prod">
<div id="productDiv">
<div id="nameFacet" name="nameFacet">
<h:selectBooleanCheckbox value="#{buyProduct.code}">
<f:selectItems itemLabel="#{prod.code}" itemValue="#{prod.name}"></f:selectItems>
</h:selectBooleanCheckbox>
<h:outputText id="prodName" value="#{prod.name}"/>
</div>
<div id="priceFacet" name="priceFacet">
<h:outputText id="prodPrice" value="#{prod.price}">
<f:convertNumber type="currency" currencySymbol="₹"></f:convertNumber>
</h:outputText>
</div>
<div id="qtDiv">
<h:inputText id="prodQuantity" value="#{buyProduct.quantity}"></h:inputText>
</div>
<ui:remove><h:graphicImage id="prodImage" value="#{prod.image}"/></ui:remove>
</div>
</c:forEach>
<div id="submit">
<h:commandButton value="Checkout" action="#{checkout.prodCheckout}"/>
</div>
</h:form>
</h:body>
</html>
package com.test.student.beans;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import com.test.student.utilities.SessionUtils;
import com.test.student.utilities.ShoppingDAOImpl;
@ManagedBean(name="accounts")
@SessionScoped
public class Accounts {
private String username;
private String password;
private String role;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String userLogin() {
Map<String,String> requestMap = buildRequestMap();
//String username = requestMap.get("loginForm:username");
//String password = requestMap.get("loginForm:password");
if((username!=null&&username!="") && (password!=""&&password != null)) {
createSession();
return "Home.xhtml?faces-redirect=true";
}
else {
FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(FacesMessage.SEVERITY_WARN,"Incorrect Username and Passowrd","Please enter correct username and Password"));
return FacesContext.getCurrentInstance().getViewRoot().getViewId();
}
}
private void createSession() {
HttpSession session = SessionUtils.getSession();
session.setAttribute("username",username);
}
public String logout() {
HttpSession session = SessionUtils.getSession();
session.invalidate();
return "Login";
}
private Map<String, String> buildRequestMap() {
ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String,String> requestMap = new HashMap<String,String>();
Map<String,String> params = extContext.getRequestParameterMap();
Set<Entry<String,String>> entries = params.entrySet();
Iterator<Entry<String,String>> iterator = entries.iterator();
while(iterator.hasNext()) {
Entry<String,String> next = iterator.next();
requestMap.put(next.getKey(), next.getValue());
}
return requestMap;
}
public String showItems() {
List<Products> products = getProducts();
HttpSession session = SessionUtils.getSession();
session.setAttribute("products", products);
return "Shop";
}
private List<Products> getProducts() {
ShoppingDAOImpl shopping = new ShoppingDAOImpl();
return shopping.getProducts();
}
}
package com.test.student.beans;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="buyProduct")
@RequestScoped
public class BuyProduct {
private String code;
private String name;
private String quantity;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
}