Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jednostavan JSF problem

[es] :: Java :: Jednostavan JSF problem

[ Pregleda: 2614 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.13.14.vie.surfer.at.



Profil

icon Jednostavan JSF problem05.12.2006. u 00:09 - pre 211 meseci
Napisao sam da je problem jednostavan, zato sto mislim da je rec o dve linije koda.

Radi se o sledecem:

Koristim JSF Data Table i imam bean u pozadini. Data Table punim preko lista koju kreiram u beanu i imam sledece kolone:

ID, FirstName, LastName

Treba mi jos jedna kolona "details" u kojoj ce biti linkovi (znaci u vakom redu imam po jedan "details" link), tako da kad kliknem na link on meni otvori novu stranicu i prikaze mi dalje podatke o osobi iz tog reda.
Znaci meni treba SELEKCIJA PODATAKA IZ JEDNOG REDA. Kako da u beanu u zavisnosti od kliknutog linka pokupim podatke vezane za taj red?

Ako nije jasno probacu na drugi nacin da objasnim
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl.sezampro.yu.



+13 Profil

icon Re: Jednostavan JSF problem05.12.2006. u 07:08 - pre 211 meseci
Code:

TvojObjekat selektovaniObjekat = (TvojObjekat)table.getRowData(); 


Naravno, treba da bindujes tabelu za table...

UIData, takodje, smesta varijablu u request scope pod imenom "var" koja moze da se iskoristi za dohvatanje trenutno selektovanog reda.
 
Odgovor na temu

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.goethe-wien.at.



Profil

icon Re: Jednostavan JSF problem05.12.2006. u 09:01 - pre 211 meseci
Ne razumem te bas najbolje.

Evo mog primera:


Ovo je events.jspf
Code:



<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
 
<%@ 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"%>
        <h:dataTable value="#{EventsBean.allEvents}" var="event" headerClass="HEADING" rowClasses="ROW1,ROW2" align="left">
                <h:column>
                    <f:facet name="header">
                        <f:verbatim>id</f:verbatim>
                    </f:facet>
                    <h:outputText value="#{event.id}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <f:verbatim>Bezeichnung</f:verbatim>
                    </f:facet>
                    <h:outputText value="#{event.bezeichnung}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <f:verbatim>Kategorie</f:verbatim>
                    </f:facet>
                    <h:outputText value="#{event.kategorie}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <f:verbatim>Subkategorie</f:verbatim>
                    </f:facet>
                    <h:outputText value="#{event.subkategorie}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <f:verbatim>details</f:verbatim>
                    </f:facet>
                </h:column>                
        </h:dataTable>


Ovo je EventsBean
Code:

package ticketline.beans;

import java.util.ArrayList;
import java.util.Iterator;

import ticketline.dao.DAOFactory;
import ticketline.db.Veranstaltung;

public class EventsBean {
    
    private int id = 0;
    private String bezeichnung = "";
    private String kategorie = "";
    private String subkategorie = "";
    
    public EventsBean() {}
    
    public EventsBean(int id, String bezeichnung, String kategorie, String subkategorie) {
        super();
        this.id = id;
        this.bezeichnung = bezeichnung;
        this.kategorie = kategorie;
        this.subkategorie = subkategorie;
    }

    public String getBezeichnung() {
        return bezeichnung;
    }

    public void setBezeichnung(String bezeichnung) {
        this.bezeichnung = bezeichnung;
    }

    public ArrayList<EventsBean> getAllEvents() {
        id = 0;
        ArrayList<EventsBean> events = new ArrayList<EventsBean>();
        Iterator i = DAOFactory.getVeranstaltungDAO().getAll().iterator();
        while(i.hasNext()) {
            Veranstaltung v = (Veranstaltung)i.next();
            EventsBean eb = new EventsBean();
            eb.setId(id++);
            eb.setBezeichnung(v.getComp_id().getBezeichnung());
            eb.setKategorie(v.getComp_id().getKategorie());
            eb.setSubkategorie(v.getSubkategorie());
    
            events.add(eb);
        }
        return(events);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getSubkategorie() {
        return subkategorie;
    }

    public void setSubkategorie(String subkategorie) {
        this.subkategorie = subkategorie;
    }

    public String getKategorie() {
        return kategorie;
    }

    public void setKategorie(String kategorie) {
        this.kategorie = kategorie;
    }
    
    
}



Kako da ja u okviru ovog beana dobijem tabelu iz fragmenta?
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.antegra.com.



+13 Profil

icon Re: Jednostavan JSF problem05.12.2006. u 10:53 - pre 211 meseci
Pa nije mi jasno sta ti nije jasno? :)

A nije mi sada ni jasno sta hoces?

A nije mi ni logicno da imas NekiBean, pa da u njemu imas property koji je lista tih istih bean-ova?!
Logicnije bi mi bilo da imas NekiSvojObjekatKojiCuvaOnoStoTebiTreba a da u backing bean-u imas listu istih...
 
Odgovor na temu

Kalasnjikov

Član broj: 59600
Poruke: 8
*.dynamic.sbb.co.yu.



Profil

icon Re: Jednostavan JSF problem05.12.2006. u 13:57 - pre 211 meseci
Nisam odavno radio JSF, ali otprilike znam sta ti treba: u kolonu details dodaj neko dugme(zaboravio sam tacno vrstu) koje izvrsava odredjenu akciju iz bean-a, a definisi i param atribut za to dugme da vrednost bude ono sto ti jednoznacno odredjuje row iz prve liste, najbolje primary key. U pozvanom metodu beana mozes da uhvatis taj parametar ( getRequest pa tacka, pa nabadaj sta zgodno deluje, ne mogu se setiti, mozda getRequestParams()), onda pripremi podatke za novu tabelu, i kao povratnu vrednost stavis string koji ce ti u config file-u znaciti odlazak na tu novu stranu. Nazalost sam zaboravio sve nazive, nisam radio par meseci, ali intuitivno je, snaci ces se i sam. Srecno!
 
Odgovor na temu

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.13.14.vie.surfer.at.



Profil

icon Re: Jednostavan JSF problem05.12.2006. u 16:32 - pre 211 meseci
Citat:
Vanja Petreski: Pa nije mi jasno sta ti nije jasno?

A nije mi sada ni jasno sta hoces?

A nije mi ni logicno da imas NekiBean, pa da u njemu imas property koji je lista tih istih bean-ova?!
Logicnije bi mi bilo da imas NekiSvojObjekatKojiCuvaOnoStoTebiTreba a da u backing bean-u imas listu istih...


Prepravio sam onako kako si rekao:

U events.jspf na dnu imam

Code:


<h:column>    
    <f:facet name="header">
        <f:verbatim>details</f:verbatim>
    </f:facet>
    <h:form>
        <h:commandLink>
               <f:actionListener type="ticketline.beans.EventsBackingBean" />
                  <h:outputText value="Details" />
                <h:commandLink>
     </h:form>
</h:column>    



Imam EventsBean samo bez one metode koja daje listu.

I imam EventsBackingBean
Code:

package ticketline.beans;

import java.util.ArrayList;
import java.util.Iterator;

import javax.faces.component.UIComponent;
import javax.faces.component.UIData;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;

import ticketline.dao.DAOFactory;
import ticketline.db.Veranstaltung;

public class EventsBackingBean implements ActionListener {

    public EventsBackingBean() {}
    
    public ArrayList<EventsBean> getAllEvents() {
        int id = 0;
        ArrayList<EventsBean> events = new ArrayList<EventsBean>();
        Iterator i = DAOFactory.getVeranstaltungDAO().getAll().iterator();
        while(i.hasNext()) {
            Veranstaltung v = (Veranstaltung)i.next();
            EventsBean eb = new EventsBean();
            eb.setId(id++);
            eb.setBezeichnung(v.getComp_id().getBezeichnung());
            eb.setKategorie(v.getComp_id().getKategorie());
            eb.setSubkategorie(v.getSubkategorie());
    
            events.add(eb);
        }
        return events;
    }
    
    public void processAction(ActionEvent anEvent) throws AbortProcessingException {
        

        EventsBean tmpBean = null;

        UIComponent tmpComponent = anEvent.getComponent();

        while (null != tmpComponent && !(tmpComponent instanceof UIData)) {
          tmpComponent = tmpComponent.getParent();
          
        }

        if (tmpComponent != null && (tmpComponent instanceof UIData)) {
        
          Object tmpRowData = ((UIData) tmpComponent).getRowData();
          if (tmpRowData instanceof EventsBean) {
            tmpBean = (EventsBean) tmpRowData;
                        
               

          }
        }

    }
    
}



Sad me zanima kako da bi mogao srediti, da kad kliknem na "details" da mi otvori novu stranu na kojoj ce biti podaci iz tog reda i nista vise. Znaci meni treba dinamicki "action" za ovu formu. Kako to da definisem u faces-config.cfg.
Ili moze i drugacije to ici?
 
Odgovor na temu

Kalasnjikov

Član broj: 59600
Poruke: 8
*.adsl.sezampro.yu.



Profil

icon Re: Jednostavan JSF problem05.12.2006. u 19:49 - pre 211 meseci
Vec sam ti rekao, dodaj 'param' atribut command linku, i u pozvanom metodu mozes da ga procitas, a actionListener ti ne treba, stavi action='bean_name.method'. U faces-configu definisi prelaz na zeljenu stranu za povratnu vrednost iz ovog metoda.
 
Odgovor na temu

[es] :: Java :: Jednostavan JSF problem

[ Pregleda: 2614 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.