Glassfish+JSF Niedziałająca podstrona i obejście hasła

0

Na jednej stronie można się zalogować lub przenieść na stronę rejestracji.
W przypadku kiedy ktoś się zaloguje, to przenosi go na stronę głównego aplikacji.
Kłopot w tym, że na stronie głównej nic ważnego się nie wyświetla.
Co gorsza jeżeli zna się url to wcale nie trzeba się logować.

kod strony z logowaniem:

<?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://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>title</title>
    </h:head>
    <h:body>
        <h:form>
            <h:outputLabel id="message" value="#{login.message}" />
            <p>e-Mail<h:inputText id="mail" value="#{login.mail}"/>
            </p>
            Password<h:inputSecret id="pass" value="#{login.pass}"/>
            <h:commandButton id="login" value="login" action="#{login.check()}">
                <f:ajax execute="@all" render="message"/>
            </h:commandButton>
            <h:commandButton id="register" value="register" action="register"/>
        </h:form>
    </h:body>
</html>

Kod głównego panelu

<?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://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Some title</title>
    </h:head>
    <h:body>
        <h:form>
            bla bla bla
            <h:outputLabel id="message" value="#{addResults.message}"/>
            <p>var1:<h:inputText id="var1" value="#{addResults.var1}"/></p>
            <p>var2:<h:inputText id="var2" value="#{addResults.var2}"/></p>
            <h:commandButton id="add" value="Add Resoult" action="">
                <f:ajax execute="@all" render="message"/>
            </h:commandButton>
        </h:form>
    </h:body>
</html>

Dlaczego żaden element formularza się nie wyświetla?
Jak wymusić logowanie?

0

A jak tu wyglądają navigations-rules z faces-config skoro można sobie skoczyc do dowolnej strony z dowolnej strony?

0
<navigation-rule>
        <from-view-id>/index.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>register</from-outcome>
            <to-view-id>register.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
        <navigation-case>
            <from-outcome>succes</from-outcome>
            <to-view-id>test.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
        <navigation-case>
            <from-outcome>test</from-outcome>
            <to-view-id>test.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/register.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>login</from-outcome>
            <to-view-id>/index.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
    </navigation-rule>
</faces-config>
0

ale cos ci sie w ogole wysletla? np

bla bla bla
var1:
var2:
??
jesli tak to podajesz w url adres fizyczny do faceletu a nie logiczny. Jakie masz mapowanie ustawione w web.xml i jaki url podajesz w przegladarce do tej strony?

0

Tak bla bla bla i vary mi się wyświetlają.

web xml wygląda u mnie następująco:

<context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>

Adres w przeglądarce to: http://localhost:29398/HelloWorld/mainPanel.xhtml

Dodam, że z logowania przenoszę się tak:

String url = "mainPanel.xhtml";
                FacesContext fc = FacesContext.getCurrentInstance();
                ExternalContext ec = fc.getExternalContext();
            try {
                ec.redirect(url);
            } catch (IOException ex) {
                ex.printStackTrace();
            }

Ten kod działa dobrze, bo po zarejestrowaniu się przenosi mnie tak do logowania i wszytko jest w porządku.

0

Nie jestes konsekwentny w tym co robisz. Definiujesz w web.xml mapowanie:

<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

jako strone startowa ustawiles na faces/index.xhtml , co by sie zgadzalo, ale juz w przegladarce wpisujesz http://localhost:29398/HelloWorld/mainPanel.xhtml zamiast
http://localhost:29398/HelloWorld/faces/mainPanel.xhtml.

Jak te mapowanie wprowadza cie w pewen niesmak, to zmien moze na takie:


    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    
    <welcome-file-list>
        <welcome-file>index.jsf</welcome-file>
    </welcome-file-list>

Adres w przeglądarce wyglada teraz tak http://localhost:29398/HelloWorld/mainPanel.jsf

i reszte tez odpowiednio musisz zmienic.

0

Dziękuję.
Zaraz sprawdzę.

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