Witajcie.
Mam problem z małym projektem, jestem studentem specjalizacji z sieci i niekoniecznie radzę sobie z dodatkowym przedmiotem aplikacji webowych ;p
Z powodzeniem udało mi się projekt zrobić, ale chciałem dodać troszkę modyfikacji i nie chcą współpracować.
Dla zobrazowania sytuacji: Jest to biblioteka, chciałem dodac zakładkę w panelu admina z wszystkimi czytelnikami w bazie .
Stworzyłem widok tak jak wszystkie inne, w szablonie dodałem zakładkę i tu się pojawia problem. Odnośnik kieruje od razu na widok listy czytelników, ale gdy klikam na zakładke Czytelnicy przenosi mnie na stronę logowania..
Jest to JSF, z bazą w xampie. Ogólnie sama lista pojawia sie jak dodam ją na istniejącą stronę główną. Nie rozumiem tylko czemu ten widok sie nie włącza... jest zrobiony tak samo jak inne.
Dodam, że programując przycisk edycji uzytkowników również nie przenosi mnie na stronę edycji więc to też chciałbym skonsultować. Poniżej kody
Tu kolejno szablon z odsylaczem,
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
>
<h:head>
<title>Biblioteka</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<h:outputStylesheet library="css" name="pure-min.css"></h:outputStylesheet>
<h:outputStylesheet library="css" name="style.css"></h:outputStylesheet>
</h:head>
<h:body>
<div class="pure-menu pure-menu-horizontal">
<p:link outcome="index" value="Biblioteka" styleClass="pure-menu-heading pure-menu-link" />
<ul class="pure-menu-list">
<h:panelGroup rendered="#{not empty zalogowanyBB.id}">
<li class="pure-menu-item">
<p:link outcome="moje_wypozyczenia" value="Moje wypożyczenia" styleClass="pure-menu-link" />
</li>
<h:panelGroup rendered="#{zalogowanyBB.jestBibliotekarzem()}">
<li class="pure-menu-item">
<p:link outcome="nowa_ksiazka" value="Dodaj nową ksiażkę" styleClass="pure-menu-link" />
</li>
<li class="pure-menu-item">
<p:link outcome="wypozyczenia" value="Wypożyczenia" styleClass="pure-menu-link" />
</li>
<li class="pure-menu-item">
<p:link outcome="czytelnicy" value="Czytelnicy" styleClass="pure-menu-link" />
</li>
</h:panelGroup>
<li class="pure-menu-item">
<h:form>
<h:commandLink action="#{loginBB.wyloguj()}" value="Wyloguj się" styleClass="pure-menu-link" />
</h:form>
</li>
</h:panelGroup>
</ul>
</div>
<ui:insert name="tresc" />
</h:body>
</html>
widok Czytelników,
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="szablon.xhtml"
>
<ui:define name="tresc">
<h3>Czytelnicy</h3>
<h:form>
<p:inputText value="#{wyszukiwarkaUzytkownikowBB.szuka}" />
<p:commandButton action="#{wyszukiwarkaUzytkownikowBB.szuka()}" value="Szukaj" style="margin-left: 10px;" />
</h:form>
<p:dataTable var="uzytkownik" value="#{listaUzytkownikowBB.uzytkownicy}" paginator="true" rows="3" emptyMessage="Brak czytelnikow." style="margin-top: 20px;">
<p:column headerText="imie">
<h:outputText value="#{uzytkownik.imie}" />
</p:column>
<p:column headerText="nazwisko">
<h:outputText value="#{uzytkownik.nazwisko}" />
</p:column>
<p:column headerText="e-mail">
<h:outputText value="#{uzytkownik.email}" />
</p:column>
<p:column headerText="rola">
<h:outputText value="#{uzytkownik.rola}" />
</p:column>
<p:column>
<h:form style="margin-bottom: 10px;">
<p:commandButton value="Edytuj" action="#{listaUzytkownikowBB.edytuj(uzytkownik)}" />
</h:form>
</p:column>
</p:dataTable>
</ui:define>
</ui:composition>
widok edycji,
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="szablon.xhtml"
>
<ui:define name="tresc">
<h3>Edycja czytelnika</h3>
<h:form styleClass="pure-form pure-form-stacked">
<h:outputLabel value="imie:" />
<h:inputText value="#{edycjaUzytkownika.uzytkownik.imie}" required="true" requiredMessage="Podaj imie!" />
<h:outputLabel value="nazwisko:" />
<h:inputText value="#{edycjaUzytkownika.uzytkownik.nazwisko}" required="true" requiredMessage="Podaj nazwisko!" />
<h:outputLabel value="e-mail:" />
<h:inputTextarea value="#{eedycjaUzytkownika.uzytkownik.email}" required="true" requiredMessage="Podaj e-mail!" />
<h:outputLabel value="rola:" />
<h:inputText value="#{edycjaUzytkownika.uzytkownik.rola}" required="true" requiredMessage="Podaj role!" />
<p:commandButton value="Zakualizuj czytelnika" action="#{edycjaUzytkownika.zaktualizuj()}" update="messages" styleClass="pure-button" style="margin-top: 10px;" />
</h:form>
</ui:define>
</ui:composition>
edycja uzytkownika BB
package com.biblioteka.bb;
import javax.inject.Named;
import javax.servlet.http.HttpSession;
import com.biblioteka.dao.UzytkownikDAO;
import com.biblioteka.encje.Uzytkownik;
import java.io.IOException;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
@Named
@ViewScoped
public class EdycjaUzytkownika implements Serializable {
private static final long serialVersionUID = 1L;
private static final String STRONA_GLOWNA = "/index?faces-redirect=true";
private static final String POZOSTAN_NA_TEJ_SAMEJ_STRONIE = null;
private Uzytkownik uzytkownik = null;
@EJB
UzytkownikDAO uzytkownikDAO;
@PostConstruct
public void wczytaj() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
uzytkownik = (Uzytkownik) session.getAttribute("uzytkownik");
session.removeAttribute("uzytkownik");
if (uzytkownik == null) {
if (!context.isPostback()) {
context.getExternalContext().redirect("index.xhtml");
context.responseComplete();
}
}
}
public String zaktualizuj() {
try {
uzytkownikDAO.merge(uzytkownik);
} catch (Exception exception) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Wystapil blad. Sprobuj ponownie.", null));
return POZOSTAN_NA_TEJ_SAMEJ_STRONIE;
}
return STRONA_GLOWNA;
}
public Uzytkownik getUzytkownik() {
return uzytkownik;
}
public void setUzytkownik(Uzytkownik uzytkownik) {
this.uzytkownik = uzytkownik;
}
}
oraz BB wyswietlania listy gdzie jest odsylacz na ten widok
package com.biblioteka.bb;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.biblioteka.dao.UzytkownikDAO;
import com.biblioteka.encje.Uzytkownik;
@Named
@RequestScoped
public class ListaUzytkownikowBB {
private static final String EDYTUJU = "/edycjauzytkownika?faces-redirect=true";
private List<Uzytkownik> uzytkownicy;
@EJB
UzytkownikDAO uzytkownikDAO;
@Inject
WyszukiwarkaUzytkownikowBB wyszukiwarkaUzytkownikowBB;
@Inject
ZalogowanyBB zalogowanyBB;
@PostConstruct
public void wczytaj() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String szuka = request.getParameter("szuka");
if (szuka == null) {
uzytkownicy = uzytkownikDAO.pobierzUzytkownikow1();
} else {
uzytkownicy = uzytkownikDAO.pobierzUzytkownikowSzukanych(szuka);
wyszukiwarkaUzytkownikowBB.setSzuka(null);
}
}
public String edytuj(Uzytkownik uzytkownik) {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
session.setAttribute("uzytkownik", uzytkownik);
return EDYTUJU;
}
public List<Uzytkownik> getUzytkownicy() {
return uzytkownicy;
}
public void setUzytkownicy(List<Uzytkownik> uzytkownicy) {
this.uzytkownicy = uzytkownicy;
}
}
pomoc potrzebna na wczoraj :(