我正在使用JSF傳遞元素,並且我想向我的Bean發送一個完整的對象,但是當我做到這一點時我得到空值。JSF傳遞元素無法發送對象
我在做這樣的事情:
<f:metadata>
<f:viewParam id="id" name="id" value="#{productDetailBean.id}"/>
<f:viewAction action="#{productDetailBean.loadBook()}"/>
<form jsf:id="form" method="post" class="container">
<ul id="variants" class="clearfix">
<li class="buy-option"><input type="radio" name="id"
class="variant-radio"
id="product-variant-#{productDetailBean.book.id}"
value="#{productDetailBean.book.id}" checked="checked" />
<label class="variant-label"
for="product-variant-#{productDetailBean.book.id}"> E-book
+ Impresso </label>
<small class="compare-at-price">R$ #{productDetailBean.book.price}</small>
<p class="variant-price">R$ #{productDetailBean.book.price}</p>
</li>
</ul>
<button type="submit" jsf:action="#{shoppingCartBean.add(productDetailBean.id)}" class="submit-image icon-basket-alt"
title="#{productDetailBean.book.title}">Comprar</button>
我的豆:
public String add(Integer id){
Book book = bookDao.search(id);
ShoppingItem shoppingItem = new ShoppingItem(book);
shoppingCart.add(shoppingItem);
return "/site/carrinho?faces-redirect=true";
}
我想做到以下幾點:
<button type="submit" jsf:action="#{shoppingCartBean.add(productDetailBean.book)}" class="submit-image icon-basket-alt"
title="#{productDetailBean.book.title}">Comprar</button>
和bean:
public String add(Book book){
ShoppingItem shoppingItem = new ShoppingItem(book);
shoppingCart.add(shoppingItem);
return "/site/carrinho?faces-redirect=true";
}
但是,當我這樣做,我得到一個空的書,是有可能做到的呢?
只要仔細檢查一下,你是說第一個代碼版本可以正常工作,你指定'#{shoppingCartBean.add(productDetailBean.id)}'?你在提交方法中得到一個整數? – DavidS
@DavidS是的,它的工作原理,但我想讓第二個版本工作 – prabello
您的問題意味着它在您使用普通的JSF組件時有效。這是真的?否則請刪除這個含義。至於技術問題,我猜你的bean的範圍很大。這個構造需要一個視圖範圍的bean。 – BalusC