[ strain @ 21.05.2012. 20:01 ] @
Radim jednu web aplikaciju za fax u Tapestry-ju i imam problem sa brisanjem iz baze.

Kao sto pise u naslovu koristim Tapestry i Hibernate.

Imam stranicu koja ima formu za dodavanje novih proizvoda i ispod prikazuje listu tih proizvoda.

Code:

<html t:type="layout" title="Dodavanje proizvoda"
      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
      xmlns:p="tapestry:parameter">

    <p>Dodavanje novog proizvoda</p>
    <p>
        <t:beaneditform object="newProduct"></t:beaneditform>
    </p>
     <p>
        <t:zone t:id="list">
            <t:grid source="products" row="product" value="product" add="delete">
                <p:deletecell>
                    <t:actionlink t:id="delete" context="product">Delete</t:actionlink>
                </p:deletecell>
            </t:grid>
        </t:zone>
    </p>
</html>


i java klasu date strane.

Code:

public class CreateProduct {
    
    @Property
    private Product newProduct;
    
    @Persist("Entity")
    @Property
    private Product product;
    
    @Inject
    private Session session;
    
    @InjectComponent
    private Zone list;
    
    @Property
    private List<Product> productList = new ArrayList<Product>(); 
    
    @CommitAfter
    public void onSuccess(){
        session.persist(newProduct);
    }
    
    public List<Product> getProducts(){
        return session.createCriteria(Product.class).addOrder(Order.desc("name")).list();
    }
    
    public void onActionFromDelete(long id){
        Product p = (Product) session.get(Product.class, id);
        session.delete(p);
        this.getProducts();            
    }
}


Problem je u poslednjoj metodi ona ne radi a nemam pojma zasto.


[ vXv_aliGator @ 29.05.2012. 20:33 ] @
Promijeni sa void na List<Product> da vrati metoda.

Code:

public List<Product> onActionFromDelete(long id){
        Product p = (Product) session.get(Product.class, id);
        session.delete(p);
        return this.getProducts();            
}


Nadam se da ce raditi.
[ strain @ 04.06.2012. 23:56 ] @
Ipak je bila mnogo velika glupost zaboravio sam @CommitAfter anotaciju sada metoda izgleda ovako i to radi

Code:

@CommitAfter
public void onActionFromDelete(long id){
    session.delete(session.get(Product.class, id));
}


sada imam druge probleme jedan od njih je dodavanje proizvoda u korpu. Napravio sam klasu ProductItem koja ce sluziti kao tempProduct i prilikom porudzbine uzimam podatke od proizvoda i dodajem ih u tempProduct i to radi sledeca metoda

Code:

@CommitAfter
private Object onActionFromOrder(long id){
    Product prod = (Product) session.get(Product.class, id);
    PrductItem item = new ProductItem();
    item.setTempName(prod.getName());
    item.setTempPrice(prod.getPrice());
    item.setTempItemNo(orderNo);
    item.setTempTotalPrice(prod.getPrice() * orderNo);
    basket.addToList(item); //ovde je problem NullPointException
    orderNo = 1;
    return this;
}

Dok na stranici Basket metoda addToList samo dodaje item u ArrayList
Code:

public void addToList(ProductItem productItem){
    orderList.add(productItem);
}

Ja mislim da je i ovde neka glupost u anotacijama ali ne mogu da provalim sta.

Kompletan NetBeans projekat je na adresi [url=] http://dl.dropbox.com/u/6268403/pcelica.tar.gz [/url]
Morao sam NetBeans jer profesor zahteva njega inace je Eclipse mnogo bolji i brzi za razvoj ovaj NetBeans kao traktor ubi mi komp.