Delete row ved hjælp af button på webuijsf:table
Hejsa!Jeg er rimelig ny i Java, og er pt. igang med at udvikle en webshop. Jeg er imidlertid løbet ind i et problem, og søger inspiration til hvordan man på en enkelt måde kan få en tilføjet button til at slette en enkelt row, i Woodstock table i Visual JSF.
Pt. virker button1 (deletebutton) ikke, og jeg forsøger at finde en måde hvor man kan bruge RowSet / RowKey evt. til at klare tricket. Jeg har spenderet endeløse timer på at google, men finder kun frem til længere typer koder der skal gennemgåes. Kan det virkelig være så indviklet?
Vh Josef
JSP
<?xml version="1.0" encoding="UTF-8"?>
<!--
-->
<jsp:root version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:webuijsf="http://www.sun.com/webui/webuijsf">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<f:view>
<webuijsf:page id="page1">
<webuijsf:html id="html1">
<webuijsf:head id="head1">
<webuijsf:link id="link1" url="/resources/stylesheet.css"/>
</webuijsf:head>
<webuijsf:body id="body1" style="background-color: rgb(244, 244, 250); -rave-layout: grid">
<webuijsf:form id="form1">
<webuijsf:staticText id="staticText1" style="font-size: 14px; left: 48px; top: 24px; position: absolute" text="Slet vare"/>
<webuijsf:table augmentTitle="false" binding="#{DeleteProduct.table1}" id="table1"
style="left: 48px; top: 72px; position: absolute; width: 450px" width="0">
<webuijsf:tableRowGroup id="tableRowGroup1" rows="10" sourceData="#{DeleteProduct.productsDataProvider}" sourceVar="currentRow">
<webuijsf:tableColumn id="tableColumn6">
<webuijsf:image id="image1" url="/resources/nophoto.jpg"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="ProductID" id="tableColumn1" sort="products.ProductID">
<webuijsf:staticText id="staticText2" text="#{currentRow.value['products.ProductID']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Name" id="tableColumn2" sort="products.Name">
<webuijsf:staticText id="staticText3" text="#{currentRow.value['products.Name']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Price" id="tableColumn3" sort="products.Price">
<webuijsf:staticText id="staticText4" text="#{currentRow.value['products.Price']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Stock" id="tableColumn4" sort="products.Stock">
<webuijsf:staticText id="staticText5" text="#{currentRow.value['products.Stock']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="ProductText" id="tableColumn5" sort="products.ProductText">
<webuijsf:staticText id="staticText6" text="#{currentRow.value['products.ProductText']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Fjern vare" id="tableColumn7">
<webuijsf:button actionExpression="#{DeleteProduct.button1_action}" id="button1" text="Fjern"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Checkbox" id="tableColumn8">
<webuijsf:checkbox id="checkbox1" immediate="true" selected=""/>
</webuijsf:tableColumn>
</webuijsf:tableRowGroup>
</webuijsf:table>
<webuijsf:dropDown id="dropDown1" items="#{DeleteProduct.dropDown1DefaultOptions.options}"
onChange="webui.suntheme4_2.common.timeoutSubmitForm(this.form, 'dropDown1');" style="left: 408px; top: 24px; position: absolute" valueChangeListenerExpression="#{DeleteProduct.dropDown1_processValueChange}"/>
<webuijsf:staticText id="staticText7" style="left: 312px; top: 24px; position: absolute" text="Foretag valg"/>
</webuijsf:form>
</webuijsf:body>
</webuijsf:html>
</webuijsf:page>
</f:view>
</jsp:root>
Java
package javaeshop;
import com.sun.data.provider.RowKey;
import com.sun.data.provider.impl.CachedRowSetDataProvider;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Table;
import com.sun.webui.jsf.model.DefaultTableDataProvider;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import javax.faces.FacesException;
import javax.faces.component.UIData;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
public class DeleteProduct extends AbstractPageBean {
private void _init() throws Exception {
productsDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet) getValue("#{SessionBean1.productsRowSet}"));
dropDown1DefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("item 1", "Tilføj"), new com.sun.webui.jsf.model.Option("http://localhost:8080/javaeshop/faces/MakeUser.jsp", "Ændre"), new com.sun.webui.jsf.model.Option("http://localhost:8080/javaeshop/faces/MakeUser.jsp", "Fjern")});
dropDown1DefaultOptions.setSelectedValue("item 1");
}
private CachedRowSetDataProvider productsDataProvider = new CachedRowSetDataProvider();
public CachedRowSetDataProvider getProductsDataProvider() {
return productsDataProvider;
}
public void setProductsDataProvider(CachedRowSetDataProvider crsdp) {
this.productsDataProvider = crsdp;
}
private SingleSelectOptionsList dropDown1DefaultOptions = new SingleSelectOptionsList();
public SingleSelectOptionsList getDropDown1DefaultOptions() {
return dropDown1DefaultOptions;
}
public void setDropDown1DefaultOptions(SingleSelectOptionsList ssol) {
this.dropDown1DefaultOptions = ssol;
}
private Table table1 = new Table();
public Table getTable1() {
return table1;
}
public void setTable1(Table t) {
this.table1 = t;
}
public DeleteProduct() {
}
@Override
public void init() {
try {
_init();
} catch (Exception e) {
log("DeleteProduct Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
}
}
@Override
public void preprocess() {
}
@Override
public void prerender() {
}
@Override
public void destroy() {
productsDataProvider.close();
}
protected SessionBean1 getSessionBean1() {
return (SessionBean1) getBean("SessionBean1");
}
public String button1_action() {
if ( productsDataProvider.canRemoveRow(null) )
{
try
{
// append new row and move cursor to that row
RowKey rk = productsDataProvider.appendRow();
productsDataProvider.setCursorRow( rk );
productsDataProvider.removeRow(rk);
}
catch ( Exception ex )
{
error( ex.getMessage() );
} // end catch
} // end if
return null;
}
}
