Java jsf pomocy

0

A wiec od początku stworzyłem klasę user:


@ManagedBean
@SessionScoped
public class user {
    public String login;
    public String haslo;
    
    public String getlogin(){
        return login;
    }
    
    public void setlogin(String g){
        this.login=g;
    }
    
     public String gethaslo(){
        return haslo;
    }
    
    public void sethaslo(String g){
        this.haslo=g;
    }
}
 

Ma ona login i hasło.

Następnie utworzyłem plik jsf


<?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">
    <h:head>
        <title>Projekt</title>
    </h:head>
    <h:body>
        <center> <p style="font-size:20px"> Logowanie </p></center><br></br>
          <a href="rejestracja.xhtml">Zarejestruj pojazd</a>  <br></br>
               <a href="pokaz.xhtml">Pokaż rejestracje</a>  <br></br>
         <a href="index.xhtml">Zaloguj</a>  <br></br>
        
    
         <center>  
             <h:form>
             Login:    <h:inputText id="login" value="#{user.login}"/><br></br>
               
             Haslo:  <h:inputText id="haslo" value="#{user.haslo}"/><br></br>
            
            <h:commandButton type="submit" value="Loguj" action="rejestracja"/>
      </h:form>
        </center>
    </h:body>
</html>



 

To działa po wcisnieciu przycisku loguj przekierowuje mnie tam gdzie chcę.
Ale mam problem jak dane z inputtexta wykorzystać w kodzie javy czyli w drugą stronę niz teraz zrobiłem.
co mam wpisać w akcjiaction="" żeby odwołać sie do metody utworzonej np. w klasie bbb o nazwie dodaj?
action="#{dodaj()}" ? czy samo action="dodaj" ?

no i w tej metodzie chce np. do zmiennej x przypisać tą wartość wpisaną w polu inputtext gdzie jest login, jak to zrobić?

0

Jak chcesz wykonać metodę to piszesz w action:
action="#{nazwaKlasy.nazwaMetody}" lub
action="#{nazwaKlasy.nazwaMetody()}"

W tej metodzie możesz się odwoływać do zmiennych ("login" i "haslo").

Edit: żeby to jeszcze zadziałało u ciebie to nazwa klasy musi być z dużej litery, czyli ma być "User", zaś w JSFie odwołujesz się wszędzie poprzez "user".

0

a jak z formularza można odczytać to co wpisaliśmy w polach i przypisać zmieniej np. chcę aby po wpisaniu username oraz hasła i następnie wcisnieciu przycisku do zmiennej x przypisało mi wartosć wpisanego pola username?

0
value="#{user.login}"

Ta linijka w kodzie, automatycznie wywołuje setter lub getter dla danego pola. Teraz w twoim managedBeanie pole login ma wartość taką jak wprowadziłeś w inpucie na stronie. Więc przypisanie będzie normalnie:

x = login
0

ok dzięki

0

no i nadal mam problem po przycisku dodaj wywala mi błąd java.lang.NullPointerException

po wypełnieniu pól i wcisnięciu przycisku ma dodać do listy utworzony obiekt, nie wiem co jest nie tak, coś z listą pewnie jak ktoś wie to mała podpowiedź by się przydała

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aaa;

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author Marcin
 */
@ManagedBean
@SessionScoped
public class Pojazd {
    public int a=0;
    public String imie;
    public String nazwisko;
    public String model;
    public String rok;
    public int numerRejestracyjne;
    public String adres;
    public List<Object> lista;

    public String getImie() {
        return imie;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getRok() {
        return rok;
    }

    public void setRok(String rok) {
        this.rok = rok;
    }

    public int getNumerRejestracyjne() {
        return numerRejestracyjne;
    }

    public void setNumerRejestracyjne(int numerRejestracyjne) {
        this.numerRejestracyjne = numerRejestracyjne;
    }

    public String getAdres() {
        return adres;
    }

    public void setAdres(String adres) {
        this.adres = adres;
    }

    public List<Object> getLista() {
        return lista;
    }

    public void setLista(List<Object> lista) {
        this.lista = lista;
    }
    
    public void dodaj(){
         
         a=a+1;
        Pojazd k = new Pojazd();
        
        k.imie = imie;
        k.nazwisko = nazwisko;
        k.adres = adres;
        k.numerRejestracyjne = a;
        k.rok =rok;
        k.model = model;
        
        lista.add(k);
    }
}


0

Zmienna:

public List<Object> lista;

nie jest nigdzie inicjalizowana. Musisz gdzieś ją zainicjalizować np w taki sposób lista = new ArrayList<Object>();


Taka mała uwaga na przyszłość zmienne oznaczamy raczej modyfikatorem private a nie public. Dostęp do nich uzyskujemy za pomocą publicznych getterów lub setterów.
0

dobra już działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1