Primefaces Datatable => Inplaces

freez

Top Contributor
Hallo Community,

ich nutze Primefaces 3.4.x mit JSF 2 und habe ein Problem mit Datatable, Filter und Inplaces. Sobald ich im Filter ein Element auswähle, reißt es mir alle Inplaces in jeder Zeile im Edit Mode auf. Scheinbar wird das ganze Formular abgeschickt und validiert. Und da alle SelectOneMenu in den Inplaces auf Required stehen schlägt scheinbar das abschicken fehl. Wie kann ich das Problem umgehen?

Bei Tante Google habe ich niemanden gefunden, der Ähnliches berichtet. Vielleicht suche ich auch verkehrt.

[XML]<h:form id="form">

<p:dataTable var="car" value="#{tableBean.mediumCarsModel}"
selection="#{tableBean.selectedCar}" selectionMode="single">
<p:column filterBy="#{car.manufacturer}" headerText="Manufacturer"
footerText="exact" filterOptions="#{tableBean.manufacturerOptions}"
filterMatchMode="exact">
<p:inplace id="ajaxInplaceman" editor="true"
label="#{car.manufacturer}">
<p:ajax event="save" listener="#{tableBean.saveManufactures(car)}"
update="ajaxInplaceman" />
<p:selectOneMenu value="#{tableBean.textman}" required="true"
label="text">
<f:selectItem itemValue="" itemLabel="Select One"></f:selectItem>
<f:selectItems value="#{tableBean.items}" />
</p:selectOneMenu>
</p:inplace>
</p:column>
</p:dataTable>
</h:form>
</h:body>[/XML]

Java:
@Named("tableBean")
@Scope("session")	//erstellt immer eine neue Instanz, wenn es eine neue Session gibt
public class TableBean implements Serializable {  
    private final static String[] colors;  
    
    private final static String[] manufacturers;  
    private SelectItem[] manufacturerOptions;  
    
    private List<Car> carsSmall; 
    private Car selectedCar;  

	private CarDataModel mediumCarsModel;  
	  
    
    
    Logger log = Logger.getLogger(getClass());

    private String text;
    private String textman;
	private String textcol;
	
	private static Map<String, String> items; // +getter
	private static Map<String, String> coloritems; // +getter

	static {  
        colors = new String[10];  
        colors[0] = "Black";  
        colors[1] = "White";  
        colors[2] = "Green";  
        colors[3] = "Red";  
        colors[4] = "Blue";  
        colors[5] = "Orange";  
        colors[6] = "Silver";  
        colors[7] = "Yellow";  
        colors[8] = "Brown";  
        colors[9] = "Maroon";  
          
        manufacturers = new String[10];  
        manufacturers[0] = "Mercedes";  
        manufacturers[1] = "BMW";  
        manufacturers[2] = "Volvo";  
        manufacturers[3] = "Audi";  
        manufacturers[4] = "Renault";  
        manufacturers[5] = "Opel";  
        manufacturers[6] = "Volkswagen";  
        manufacturers[7] = "Chrysler";  
        manufacturers[8] = "Ferrari";  
        manufacturers[9] = "Ford"; 
        
        
        items = new LinkedHashMap<String, String>();
        
        for(String man : manufacturers)
        	items.put(man+"_anzeige          ", man+"_id");
        
        
        coloritems = new LinkedHashMap<String, String>();
        
        for(String col : colors)
        	coloritems.put(col+"_anzeige          ", col);
    }  
  

        

      
    public TableBean() {  
        carsSmall = new ArrayList<Car>();  
          
        populateRandomCars(carsSmall, 9);
        mediumCarsModel = new CarDataModel(carsSmall); 
        manufacturerOptions = createFilterOptions(manufacturers);  
    }  
    
    
    
    private SelectItem[] createFilterOptions(String[] data)  {  
        SelectItem[] options = new SelectItem[data.length + 1];  
  
        options[0] = new SelectItem("", "Select");  
        for(int i = 0; i < data.length; i++) {  
            options[i + 1] = new SelectItem(data[i], data[i]);  
        }  
  
        return options;  
    }  
      
    private void populateRandomCars(List<Car> list, int size) {  
        for(int i = 0 ; i < size ; i++)  
            list.add(new Car(getRandomModel(), getRandomYear(), getRandomManufacturer(), getRandomColor()));  
    } 
    
    
    public void save(Car car){
    	log.info("TableBean.save text: "+text);
    	log.info("TableBean.save year: "+car.getYear());
    	log.info("TableBean.save yearSel: "+selectedCar.getYear());
    	car.setModel(text);
    }
    
    
    public void saveManufactures(Car car){
    	log.info("TableBean.saveManufactures textman: "+textman);
    	log.info("TableBean.saveManufactures year: "+car.getYear());
    	log.info("TableBean.saveManufactures yearSel: "+selectedCar.getYear());
    	car.setManufacturer(textman);
    }
    
    public void saveColor(Car car){
    	log.info("TableBean.saveColor textman: "+textman);
    	log.info("TableBean.saveColor year: "+car.getYear());
    	log.info("TableBean.saveColor yearSel: "+selectedCar.getYear());
    	car.setColor(textcol);
    }
      
    public List<Car> getCarsSmall() {  
        return carsSmall;  
    }  
  
    private int getRandomYear() {  
        return (int) (Math.random() * 50 + 1960);  
    }  
      
    private String getRandomColor() {  
        return colors[(int) (Math.random() * 10)];  
    }  
      
    private String getRandomManufacturer() {  
        return manufacturers[(int) (Math.random() * 10)];  
    }  
      
    private String getRandomModel() {  
        return UUID.randomUUID().toString().substring(0, 8);  
    }

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}

	public Map<String, String> getItems() {
		return items;
	}

	public String getTextman() {
		return textman;
	}

	public void setTextman(String textman) {
		this.textman = textman;
	}

	public Map<String, String> getColoritems() {
		return coloritems;
	}

	public String getTextcol() {
		return textcol;
	}

	public void setTextcol(String textcol) {
		this.textcol = textcol;
	}

	public Car getSelectedCar() {
		return selectedCar;
	}

	public void setSelectedCar(Car selectedCar) {
		this.selectedCar = selectedCar;
	}

	public CarDataModel getMediumCarsModel() {
		return mediumCarsModel;
	}

	public void setMediumCarsModel(CarDataModel mediumCarsModel) {
		this.mediumCarsModel = mediumCarsModel;
	}  
	
    public void onRowSelect(SelectEvent event) {  
    	log.info("TableBean.onRowSelect yearSel: "+selectedCar.getYear());
    }  
  
    public void onRowUnselect(UnselectEvent event) {  
    	log.info("TableBean.onRowUnselect yearSel: "+selectedCar.getYear());
    } 
    
    public SelectItem[] getManufacturerOptions() {  
        return manufacturerOptions;  
    }
}
 

freez

Top Contributor
In der aktuellen stabilen Version geht das ja noch nicht und den Celleditor wollte ich so nicht nutzen. Deswegen die Kombination mit dem Inplace. Aber vielleicht sollte ich mich daran nicht so arg festhalten.

Hat jemand schon Erfahrungen mit Celleditor und exact Filter?
 

freez

Top Contributor
OK, erste Tests zeigen, dass exact Filter und Celleditor miteinander sauber arbeiten können. Allerdings funktioniert die aktuelle 3.5er Snapshot wohl noch nicht sauber und auch nicht über alle Browser hinweg mit Filter und Celleditor.

Trotzdem muss ich sagen, dass mir Inplace etwas besser gefällt als der Celleditor, da man auch Buttons zum Bestätigen oder Abbrechen der Änderung in einer einzigen Spalte hat. Gibt es Celleditor wohl nur für die ganze Zeile.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JSF einfache DataTable PrimeFaces Web Tier 1
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
F Primefaces Datatable Web Tier 6
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
T JSF Primefaces: selectedvalue von "selectmanyCheckbox" geht verloren Web Tier 0
W JSF Primefaces Selection Mode Web Tier 2
FINF_AW_Alex JSF PrimeFaces Dialog verlinken Web Tier 3
W JSF Primefaces Web Tier 5
F JSF Problem mit Primefaces Web Tier 7
F JSF Problem mit Primefaces Web Tier 4
S JQuery und Primefaces (Immer wieder Ärger damit) Web Tier 0
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
K JSON in Primefaces Table Web Tier 3
C JSF Zusammenarbeit Primefaces und Tomahawk. Web Tier 2
J JSF Grad der Barrierefreiheit von PrimeFaces, ICEFaces, RichFaces und OpenFaces Web Tier 2
P JSF Primefaces Picklist-Ersatz mit vielen Daten Web Tier 4
S primefaces picklist untereinander anordnen Web Tier 6
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
M onNodeExpand listener in PrimeFaces Web Tier 4
F Primefaces Dialog Web Tier 7
F JSF Primefaces 3.3 treetable Web Tier 9
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces commandButton und actionListener Web Tier 6
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
M JSF Dynamische Größe bei Primefaces Komponenten Web Tier 2
P PrimeFaces DataGrid Click "simulieren" Web Tier 5
J JSF2+primefaces? Web Tier 20
H JSF JSF 2.0 (Primefaces) commandLinks mit action="mypage.xhtml" ohne die URL im Browser zu ändern Web Tier 8
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
F Primefaces Einstieg Web Tier 1
R Primefaces: No Library Found For This Namespace Web Tier 4
M Primefaces COmmandBUtton Web Tier 8
D JSF Ajax mit Facelets (PrimeFaces) Web Tier 4
Z Primefaces sieht grausam aus Web Tier 1
Z PrimeFaces (/ JSF) Konfigurationsproblem Web Tier 8
K jsf 1.2 tomahawk t:dataTable generic use Web Tier 3
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
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
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
T JSF/Richfaces rich:dataTable with rich:datascroller Web Tier 1
O Focus auf Textfeld, in letzter Reihe einer dataTable Web Tier 2
M Frage zur Konfiguration einer RichFaces DataTable Web Tier 4
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
R JSF <rich:datatable> problem Web Tier 4
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
T richfaces datatable Web Tier 3
A JSF: Datatable Links mit Properties Web Tier 3
S richfaces Datatable horizontal ausgeben Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben