Hallo zusammen.
Ich bin neu hier, und verzweifel an folgendem Problem. Ich erzeuge einen <h:commandButton>, welcher sich innerhalb einer <h:dataTable> befindet.
in der jeweiligen Celle, befindet sich die eine ID welche automatisiert mitgegeben wird.
Wenn ich jedoch auf diesen Button drücke wird nicht wie gewollt die Methode "setFavourite()" mit dem Parameter der ID aufgerufen.
Hab schon im Debugger geguckt und es wird einfach nicht ausgegeben. Hab das Internet durchsucht und schon verschiedene andere Arten versucht, aber ich bin mit meinem Latein am Ende.
Ich arbeite mit der NetBeans IDE 8.2 und dem GlassFish Server 4.1.1.
Hier der Teil welcher nicht funktioniert:
--------------------------------------------------------------------------------------
Falls Bedarf da ist, hier nochmal alles:
index.xhtml
ManagedBean
Films.java
TestBackground.java
Ich bin neu hier, und verzweifel an folgendem Problem. Ich erzeuge einen <h:commandButton>, welcher sich innerhalb einer <h:dataTable> befindet.
in der jeweiligen Celle, befindet sich die eine ID welche automatisiert mitgegeben wird.
Wenn ich jedoch auf diesen Button drücke wird nicht wie gewollt die Methode "setFavourite()" mit dem Parameter der ID aufgerufen.
Hab schon im Debugger geguckt und es wird einfach nicht ausgegeben. Hab das Internet durchsucht und schon verschiedene andere Arten versucht, aber ich bin mit meinem Latein am Ende.
Ich arbeite mit der NetBeans IDE 8.2 und dem GlassFish Server 4.1.1.
Hier der Teil welcher nicht funktioniert:
HTML:
<h:outputText value="#{ManagedBean.favorite}" id="meineFilmID"/>
<h:dataTable value="#{ManagedBean.filmList}" id="filmeTabelle" var="films"
styleClass="table-css"
headerClass="table-header-css"
rowClasses="order-table-odd-row,order-table-even-row"
>
<!-- column -->
<h:column>
<!-- column header -->
<f:facet name="header">Title</f:facet>
<!-- row content -->
#{films.title}
</h:column>
<h:column>
<f:facet name="header">Date</f:facet>
#{films.date}
</h:column>
<h:column>
<f:facet name="header">Genre</f:facet>
#{films.genre}
</h:column>
<h:column>
<f:facet name="header">Director</f:facet>
#{films.director}
</h:column>
<h:column>
<f:facet name="header">Actor</f:facet>
#{films.actor}
</h:column>
<h:column>
<f:facet name="header">ID/Favorite</f:facet>
<h:commandButton value="#{films.id}">
<f:ajax event="click" execute="#{ManagedBean.SetFavorite(films.id)}" render = "meineFilmID" />
</h:commandButton>
</h:column>
</h:dataTable>
--------------------------------------------------------------------------------------
Falls Bedarf da ist, hier nochmal alles:
index.xhtml
HTML:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
>
<h:head>
<title>Facelet Title</title>
<style>
table, th, td{
border-collapse:collapse;
border:1px solid #000000;
}
.order-table{
}
.order-table-header{
text-align:center;
color: #ffffff;
background:none repeat scroll 0 0 #000000;
padding:16px;
}
.order-table-odd-row{
text-align:center;
background:none repeat scroll 0 0 #FFFFFFF;
}
.order-table-even-row{
text-align:center;
background:none repeat scroll 0 0 #F9F9F9;
}
</style>
</h:head>
<h:body>
<!-- formular -->
<h:form>
<!-- Radio Button -->
<h:selectOneMenu id="fiterAttribute" value="#{ManagedBean.filterAttribut}">
<f:selectItem itemValue="title" itemLabel="Title" />
<f:selectItem itemValue="date" itemLabel="Date" />
<f:selectItem itemValue="genre" itemLabel="Genre" />
<f:selectItem itemValue="director" itemLabel="Director" />
<f:selectItem itemValue="actor" itemLabel="Actor" />
</h:selectOneMenu>
<h:outputText value="#{ManagedBean.filterValue}" id="meinText"/>
<br />
<!-- -->
<h:inputText id="filterValue" value="#{ManagedBean.filterValue}"></h:inputText>
<br />
<h:commandButton value="filtern" action="#{ManagedBean.showMovies()}">
<f:ajax execute = "fiterAttribute filterValue" render = "filmeTabelle meinText" />
</h:commandButton>
<!-- Table -->
<h:outputText value="#{ManagedBean.favorite}" id="meineFilmID"/>
<h:dataTable value="#{ManagedBean.filmList}" id="filmeTabelle" var="films"
styleClass="table-css"
headerClass="table-header-css"
rowClasses="order-table-odd-row,order-table-even-row"
>
<!-- column -->
<h:column>
<!-- column header -->
<f:facet name="header">Title</f:facet>
<!-- row content -->
#{films.title}
</h:column>
<h:column>
<f:facet name="header">Date</f:facet>
#{films.date}
</h:column>
<h:column>
<f:facet name="header">Genre</f:facet>
#{films.genre}
</h:column>
<h:column>
<f:facet name="header">Director</f:facet>
#{films.director}
</h:column>
<h:column>
<f:facet name="header">Actor</f:facet>
#{films.actor}
</h:column>
<h:column>
<f:facet name="header">ID/Favorite</f:facet>
<h:commandButton value="#{films.id}">
<f:ajax event="click" execute="#{ManagedBean.setFavorite(films.id)}" render = "meineFilmID" />
</h:commandButton>
</h:column>
</h:dataTable>
<h:inputText id="favoriteInput" value="#{ManagedBean.favorite}"></h:inputText>
<h:commandButton value="TestSubmit">
<f:ajax execute = "favoriteInput" render = "testText" />
</h:commandButton>
<h:outputText value="#{ManagedBean.favorite}" id="testText"/>
</h:form>
</h:body>
</html>
ManagedBean
Java:
/*
* WebTechnologien Übung2
*/
package jsfBackend;
import TestFassade.TestBackground;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
/**
* @author Mustermann
*/
@ManagedBean(name="ManagedBean", eager = true)
@SessionScoped
public class NewJSFManagedBean implements Serializable{
private static final long serialVersionUID = 1L;
private Films[] filmList;
private String filterAttribut;
private String filterValue;
private String favorite;
public String getFilterAttribut(){
System.out.println("ausgabe (getFilterAttribut): "+filterAttribut);
return filterAttribut;
}
public void setFilterAttribut(String filterAttribut){
System.out.println("ausgabe (setFilterAttribut)(vorher): "+filterAttribut);
this.filterAttribut = filterAttribut;
System.out.println("ausgabe (setFilterAttribut)(nachher): "+filterAttribut);
}
public String getFilterValue(){
System.out.println("ausgabe (getFilterValue): "+filterValue);
return filterValue;
}
public void setFilterValue(String filterValue){
System.out.println("ausgabe (setFilterValue)(vorher): "+filterValue);
this.filterValue = filterValue;
System.out.println("ausgabe (setFilterValue)(nachher): "+filterValue);
}
public Films[] getFilmList(){
System.out.println("ausgabe (setFilmList): "+filmList);
return filmList;
}
public void setFilmList(String[][] filmArray){
System.out.println("ausgabe (setFilmList)(vorher): "+filmList);
this.filmList = arrayToFilms(filmArray);
System.out.println("ausgabe (setFilmList)(nachher): "+filmList);
}
public String getFavorite(){
//TODO Favoriten Setten
System.out.println("ausgabe (getFavorite): "+favorite);
return favorite;
}
public void setFavorite(String filmId){
//TODO Favoriten Setten
System.out.println("ausgabe (setFavorite)(vorher): "+favorite);
this.favorite = filmId;
System.out.println("ausgabe (setFavorite)(nachher): "+favorite);
}
public void external_setFavorite(){
//setFavorite("hallo Weltos");
}
public void showMovies(){
System.out.println("ausgabe_METHODE (showMovies): filterAttribut: \""+filterAttribut+"\"filterValue: \""+filterValue+"\"");
setFilmList(TestBackground.getList(filterAttribut, filterValue));
}
public Films[] arrayToFilms(String[][] filmListTest){
System.out.println("ausgabe_METHODE (arrayToFilms(--->)): "+filmListTest);
Films[] Liste= new Films[filmListTest.length];
for(int i=0; i<filmListTest.length; i++){
Liste[i] = new Films(filmListTest[i][0],filmListTest[i][1],filmListTest[i][2],filmListTest[i][3],filmListTest[i][4],filmListTest[i][5]);
}
return Liste;
}
}
Films.java
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package jsfBackend;
/**
*
* @author Mustermann
*/
public class Films{
String title;
String date;
String genre;
String director;
String actor;
String id;
public Films(String title, String date,
String genre, String director, String actor, String id){
this.title = title;
this.date = date;
this.genre = genre;
this.director = director;
this.actor = actor;
this.id = id;
}
public String getTitle(){
return this.title;
}
public String getDate(){
return this.date;
}
public String getGenre(){
return this.genre;
}
public String getDirector(){
return this.director;
}
public String getActor(){
return this.actor;
}
public String getId(){
return this.id;
}
public void setTitle(String x){
this.title = x;
}
public void setDate(String x){
this.date = x;
}
public void setGenre(String x){
this.genre = x;
}
public void setDirector(String x){
this.director = x;
}
public void setActor(String x){
this.actor = x;
}
public void setId(String x){
this.id = x;
}
}
TestBackground.java
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package TestFassade;
/**
*
* @author Mustermann
*/
public class TestBackground {
static String filterAttribut = "";
static String[][] FILM_LIST_TEST = {{"Terminator", "01.01.1990", filterAttribut, "Arnold", "Schwarzenegger", "1"}, {"Eis am Stiel", "01.01.1970", filterAttribut, "Tommy", "Thompson", "2"}};
static String[][] FILM_LIST_TEST2 = {{"TitleMan", "01", filterAttribut, "Arnold", "Schwarzenegger", "3"}, {"B", "02", filterAttribut, "Tommy", "Thompson", "4"}};
static String[][] FILM_LIST_TEST3 = {{"DateMan", "01", filterAttribut, "Arnold", "Schwarzenegger", "5"}, {"B", "02", filterAttribut, "Tommy", "Thompson", "6"}};
static String[][] FILM_LIST_TEST4 = {{"GenreMan", "01", filterAttribut, "Arnold", "Schwarzenegger", "7"}, {"B", "02", filterAttribut, "Tommy", "Thompson", "8"}};
static String[][] FILM_LIST_TEST5 = {{"DirectorMan", "01", filterAttribut, "Arnold", "Schwarzenegger", "9"}, {"B", "02", filterAttribut, "Tommy", "Thompson", "10"}};
static String[][] FILM_LIST_TEST6 = {{"ActorMan", "01", filterAttribut, "Arnold", "Schwarzenegger", "11"}, {"B", "02", filterAttribut, "Tommy", "Thompson", "12"}};
public static String[][] getList(String filter_Attribut, String filterValue){
filterAttribut = filter_Attribut;
String[][] filmList;
switch(filterAttribut){
case "title":
filmList = FILM_LIST_TEST2;
break;
case "date":
filmList = FILM_LIST_TEST3;
break;
case "genre":
filmList = FILM_LIST_TEST4;
break;
case "director":
filmList = FILM_LIST_TEST5;
break;
case "actor":
filmList = FILM_LIST_TEST6;
break;
default:
filmList = FILM_LIST_TEST;
}
return filmList;
}
}