JSF/Richfaces rich:dataTable with rich:datascroller

TDT-44

Neues Mitglied
Hallo zusammen,
ich habe ein Problem und komme einfach nicht auf die Lösung! Ich ahne das es etwas ganz simples ist, aber ich komme einfach nicht darauf!
Also hier das Problem:
Ich habe eine rich:dataTable in der ich mit einem rich:dataScroller navigieren will. in meinem beispiel habe ich eine 3x3Matrix pro seite. also auf einer seite werden herkunftländer von steaks gezeigt und die art wie man sie haben will(blood_rare, medium, well_done).



hier der quellcode für die jsf seite:
Java:
<%@ page session="false" contentType="text/html;charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<%@include file="include/head.inc"%>
<body>
<center><f:view>

	<f:loadBundle basename="#{messageHandler.languagePack}" var="msg" />

	<a4j:keepAlive beanName="dataScrollerBean" ajaxOnly="true" />

	<t:panelLayout id="page" layout="classic" styleClass="pageLayout"
		headerClass="pageHeader" footerClass="pageFooter">

		<f:facet name="header">
			<f:subview id="header">
				<jsp:include page="include/page_header.jsp" />
			</f:subview>
		</f:facet>


		<f:facet name="body">

			<h:form>
			
				<center><rich:dataTable width="500" id="exampleList"
					styleClass="articleTable" rows="3" columnClasses="col"
					value="#{dataScrollerBean.articleList}" var="item">

					<f:facet name="header">

						<rich:columnGroup>
							<h:column>
								<h:outputText value="Steak origin}" />
							</h:column>
							<h:column>
								<h:outputText value="blood rare" />
							</h:column>
							<h:column>
								<h:outputText value="medium" />
							</h:column>
							<h:column>
								<h:outputText value="well done" />
							</h:column>
							<h:column>
								<h:outputText value="Add-Button" />
							</h:column>
						</rich:columnGroup>
					</f:facet>

					<h:column>
						<h:outputText value="#{item.origin}" />
					</h:column>
					<h:column>
						<center><h:selectBooleanCheckbox 
							value="#{item.blood_rare}" /></center>
					</h:column>
					<h:column>
						<center><h:selectBooleanCheckbox 
							value="#{item.medium}" /></center>
					</h:column>
					<h:column>
						<center><h:selectBooleanCheckbox 
							value="#{item.well_done}" /></center>
					</h:column>
				
					<h:column>
						<center><h:commandButton value="Add" 
							action="#{dataScrollerBean.print}" /></center>
					</h:column>
 					

				</rich:dataTable> 
				<rich:spacer height="2" />
					<rich:datascroller align="center" action="#{dataScrollerBean.print}" for="exampleList" maxPages="20"
						id="sc2" reRender="sc2" />
					<rich:spacer height="20" />

					
					<h:commandButton value="Print" action="#{dataScrollerBean.print}" />
					
					
					</center>
			</h:form>

		</f:facet>

		<f:facet name="footer">
			<f:subview id="footer">
				<jsp:include page="include/page_footer.jsp" />
			</f:subview>
		</f:facet>

	</t:panelLayout>

</f:view></center>
</body>
</html>

Das Problem liegt nun darin, das Checkboxen die ich ausgewählt haben nicht gespeichert werden, wenn ich auf die 2. Seite der Tabelle geh! Momentan ist es so wenn ich auf die nächste Seite geh und wieder zurück ist alles unselected obwohl ich selected hab.
Wenn ich nun allerdings auf der Seite den Print-Button drücke speichert er die werte ich es funktioniert so wie ich es will!
Deswegen habe ich als workaround einen add-Button hinter jede Zeile, aber geht natürlich jegliche userability verloren ;)

Mit dem actionListener und valueChangelistener hab ich es auch versucht aber hat net funktioniert!

hier ist noch der Java des Beans und des Containers.

Ich hoffe jemand kann mir Helfen oder hat einen Tipp für mich! danke und grüße TDT

Bean:
Java:
package test;

import java.util.ArrayList;
import java.util.List;

public class CopyDataScrollerBean {

	private List<DataScrollerSteak> selectedArticleList;

	public List<DataScrollerSteak> articleList;
	
	
	//standard Constructor
	public CopyDataScrollerBean() {
	
		System.out.println("Constructor");
	
		articleList = new ArrayList<DataScrollerSteak>();
		
		articleList = this.fillContainer();
		
	}
	
	
	public List<DataScrollerSteak> fillContainer(){
		
		List<DataScrollerSteak> steakContainer = new ArrayList<DataScrollerSteak>();
		
		DataScrollerSteak steak1 = new DataScrollerSteak("Argentinia", "steak1", false, false, false);
		DataScrollerSteak steak2 = new DataScrollerSteak("China", "steak2", false, false, false);
		DataScrollerSteak steak3 = new DataScrollerSteak("Brasil", "steak3", false, false, false);
		DataScrollerSteak steak4 = new DataScrollerSteak("Germany", "steak4", false, false, false);
		DataScrollerSteak steak5 = new DataScrollerSteak("Hunsrück(Schwencker)", "steak5", false, false, false);
		DataScrollerSteak steak6 = new DataScrollerSteak("Bavaria", "steak6", false, false, false);
		
		steakContainer.add(steak1);
		steakContainer.add(steak2);
		steakContainer.add(steak3);
		steakContainer.add(steak4);
		steakContainer.add(steak5);
		steakContainer.add(steak6);
		
		return steakContainer;
	}
	
	public String getSelectedItems() {

		System.out.println("getSelectedItems");
		
        // Get selected items.
        selectedArticleList = new ArrayList<DataScrollerSteak>();
        
        System.out.println(articleList.size());
        
        for (DataScrollerSteak dataItem : articleList) {
            
        	System.out.println(dataItem.getSteakId());
        	System.out.println(dataItem.isBlood_rare());	
        	System.out.println(dataItem.isMedium());
        	System.out.println(dataItem.isWell_done());
       
        	if(dataItem.isBlood_rare() || dataItem.isMedium() || dataItem.isWell_done() ){
        		
        		selectedArticleList.add(dataItem);
        		System.out.println("in add");
            	
        	}
        	
        	if(dataItem.getOrigin().equals(dataItem.getOrigin())){	
        	}
        	if (dataItem.isBlood_rare()) {
                dataItem.setBlood_rare(true); // Reset.
            }
        	if (dataItem.isMedium()) {;
                dataItem.setMedium(true); // Reset.
            }
        	if (dataItem.isWell_done()) {
                dataItem.setWell_done(true); // Reset.
            }
        	
        }
      
        return null;
    }
	
	public String print(){
		
		
		this.getSelectedItems();
		
		for(int i=0;i<this.getSelectedArticleList().size();i++){
			System.out.println(this.getSelectedArticleList().get(i).getSteakId() + " - " + 
								this.getSelectedArticleList().get(i).getOrigin() + " - " +
								this.getSelectedArticleList().get(i).isBlood_rare() + " - " + 
								this.getSelectedArticleList().get(i).isMedium() + " - " + 
								this.getSelectedArticleList().get(i).isWell_done() );
		}
		
		return null;
	}


	
	// GETTER & SETTER

		public List<DataScrollerSteak> getSelectedArticleList() {
			return selectedArticleList;
		}
 
		public void setSelectedArticleList(List<DataScrollerSteak> selectedArticleList) {
			this.selectedArticleList = selectedArticleList;
		}


		public List<DataScrollerSteak> getArticleList() {
			return articleList;
		}


		public void setArticleList(List<DataScrollerSteak> articleList) {
			this.articleList = articleList;
		}
	
}

SteakContainer:
Java:
package test;

public class DataScrollerSteak {

	private String origin;
	private String steakId;
	
	private boolean blood_rare;
	private boolean medium;
	private boolean well_done;
	
	
	public DataScrollerSteak(String origin, String steakId, boolean blood_rare, boolean medium, boolean well_done) {
	
		this.origin = new String(origin);
		this.steakId = new String(steakId);
		this.blood_rare = false;
		this.medium = false;
		this.well_done= false;
		
	}
	

	public String getOrigin() {
		return origin;
	}


	public String getSteakId() {
		return steakId;
	}


	public boolean isBlood_rare() {
		return blood_rare;
	}


	public boolean isMedium() {
		return medium;
	}


	public boolean isWell_done() {
		return well_done;
	}


	public void setOrigin(String origin) {
		this.origin = origin;
	}


	public void setSteakId(String steakId) {
		this.steakId = steakId;
	}


	public void setBlood_rare(boolean bloodRare) {
		blood_rare = bloodRare;
	}


	public void setMedium(boolean medium) {
		this.medium = medium;
	}


	public void setWell_done(boolean wellDone) {
		well_done = wellDone;
	}


	
}

PS: Falls ich was vergessen hab bitte einfach kurz bescheid sagen! Danke
 

laggyshaggy

Neues Mitglied
Hallo,
Auch wenn dein Posting schon atwes älter ist, hier die Lösung:
Java:
<h:selectBooleanCheckbox id="idFooCheckbox"
                                   value="#{foo.selected}">                                   
  <a4j:support ajaxSingle="true" event="onclick"/>
</h:selectBooleanCheckbox>
Durch <a4j:support ajaxSingle="true" event="onclick"/> werden deinen Eingaben auch über verschiedene "Pages" hinweg gespeichert.

Beste Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JSF Richfaces rich:messages Web Tier 13
S Zugang zur List elementen (richfaces) Web Tier 1
G GWT oder RichFaces oder ... Web Tier 5
J JSF Grad der Barrierefreiheit von PrimeFaces, ICEFaces, RichFaces und OpenFaces Web Tier 2
K RichFaces CommandButton mit PopUp verwenden Web Tier 2
M RichFaces zerstörte mein Projekt Web Tier 4
D JSF RichFaces Tree-Beispiel Problem Web Tier 2
F RichFaces Override CSS Web Tier 4
T RichFaces will nicht funktionieren :( Web Tier 2
T RichFaces einbinden Web Tier 4
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
T JSF Simple Anwendung mit Richfaces Web Tier 7
S Richfaces 4.0 Ajax Waitingpanel Web Tier 2
J JSF Richfaces Tabs, dynamisches include funktioniert nicht Web Tier 4
S Richfaces: Column ReRender Web Tier 4
M JSF Richfaces 2 Kalender kombinieren Web Tier 4
K RichFaces Geschwindigkeit bei Tabellen Web Tier 3
H Richfaces - Taglib Problem gelb unterstrichen Ajax Output Web Tier 6
E JSF 2.0 Wie Richfaces in Eclipse einbinden? Web Tier 25
M Frage zur Konfiguration einer RichFaces DataTable Web Tier 4
I JSF 2.0 und RICHFACES/ ICEFACES oder ähnliches? Web Tier 6
B Probleme mit RichFaces Web Tier 2
B Richfaces 3.3.2.SR1 --- Kompatibilität Web Tier 3
N Richfaces + AjaxValidator Web Tier 3
T richfaces + jsf Web Tier 3
L [RichFaces] Applikation wird mit NullPointerException beendet Web Tier 5
W RichFaces converter in orderingList wirft exception Web Tier 5
V Image Map und Ajax-Richfaces Web Tier 5
J Richfaces combobox zeigt Items nicht an Web Tier 4
P Richfaces/Seam: RichShuttleListe funktioniert nicht Web Tier 8
N oncomplete bei Richfaces Web Tier 3
D Richfaces (Seam/Hibernate): dynamische Eingabefelder Web Tier 2
D Eventing in Kombination mit RichFaces bzw. Element.show() Web Tier 2
F Richfaces livedemo Web Tier 1
F RichFaces, Problem mit PickList Web Tier 2
T richfaces datatable Web Tier 3
C RichFaces Ajax ReRender funktioniert nicht. Web Tier 2
S richfaces Datatable horizontal ausgeben Web Tier 2
F RichFaces: JSF-Lifecycle / Validierung Web Tier 2
E RichFaces 3.2.1 Probleme Web Tier 4
F nach Update auf RichFaces 3.2.0 Fehlermeldungen Web Tier 5
R rich:datatabele : kennt Keine events ? Web Tier 1
D JSF <rich:select, "Überprüfungsfehler: Wert ist ungültig" Web Tier 10
G JSF rich:extendedDataTable in rich:panel ist gestaucht Web Tier 5
C Clientseitiger Validator in rich:calendar Web Tier 6
N rich:extendedDataTable hat eine Spalte zuviel Web Tier 4
T JSF <rich:select> Breite einstellen? Web Tier 2
I JSF Nur Strings in rich:select ? Web Tier 4
P rich:panelMenuGroup --> expanded Parameter Problem Web Tier 3
J rich:modalpanel vom java-code aus öffnen und schliessen Web Tier 2
I Rich Faces nur mit JBoss oder auch Tomcat? Web Tier 7
R JSF <rich:datatable> problem Web Tier 4
F Unterschied h:selectOneMenu zu rich:comboBox Web Tier 4
A rich:tabPanel - Inhalt nicht angezeigt Web Tier 4
F rich:modalpanel schliesst sich von selbst Web Tier 2
K jsf 1.2 tomahawk t:dataTable generic use Web Tier 3
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
W JSF einfache DataTable PrimeFaces Web Tier 1
F JSF h:dataTable fix Header und Scroll Body Web Tier 0
D JSF DataTable konvertiert Felder nicht Web Tier 1
K deleteButton in dataTable geht nur halb Web Tier 8
G JSP dataTable header - Datenwerte verwenden? Web Tier 3
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
F Primefaces Datatable => Inplaces Web Tier 3
F Primefaces Datatable Web Tier 6
F.S.WhiTeY JSF h:dataTable / p:komponente Pagination mit Buchstaben. Web Tier 2
jottyfan JSF dataTable und graphicImage (mit JQuery) Web Tier 4
M JSF Composite components - dynamische dataTable? Web Tier 8
M JSF DataTable refreshen mit Ajax? Web Tier 5
M JSF Datatable, nichts geht ohne vorher zu refreshen... Web Tier 4
P JSF 1.2 commandButton in dataTable Web Tier 2
L JSF Überflüssige Methodenaufrufe - dataTable Web Tier 5
T DataTable Composite-Component und ManyToOne Web Tier 5
J JSF Datatable bestimmte Methode Web Tier 4
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
O Focus auf Textfeld, in letzter Reihe einer dataTable Web Tier 2
M Datatable und der Zurückbutton Web Tier 4
K JSF Tomahawk dataScroller mit dataTable Web Tier 4
Y dataTable als dynamisches Grid Web Tier 4
E JSF Datatable erst nach Buttonklick anzeigen Web Tier 2
V JSF: dataTable Getter wird nie aufgerufen Web Tier 6
S JSF dataTable Position feststellen Web Tier 2
S JSF: colspan und rowspan in datatable Web Tier 4
E JSF Datatable leere Zellen anzeigen Web Tier 2
A JSF: Datatable Links mit Properties Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben