Передача нескольких экземпляров bean-компонента, созданного в c: forEach в JSF - PullRequest
0 голосов
/ 25 октября 2018

У меня есть форма 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;
	}
	
	
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...