Форма не отправлена - PullRequest
       2

Форма не отправлена

3 голосов
/ 24 ноября 2011

Я написал простую форму JSF. Проблема в том, что есть ошибка, которую я не могу найти. Когда я открываю главную страницу и вводю имя пользователя и пароль, страница должна перенаправить меня на следующую страницу, но этого не происходит. Можете ли вы помочь мне найти мою ошибку?

Это главная страница входа в систему JSF

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:h="http://java.sun.com/jsf/html">
    <head>
        <title>Login</title>
        <link rel="stylesheet" type="text/css" href="resources/css/style.css" />
        <script src="resources/js/cufon-yui.js" type="text/javascript"></script>
        <script src="resources/js/ChunkFive_400.font.js" type="text/javascript"></script>
        <script type="text/javascript">
            Cufon.replace('h1',{ textShadow: '1px 1px #fff'});
            Cufon.replace('h2',{ textShadow: '1px 1px #fff'});
            Cufon.replace('h3',{ textShadow: '0px 1px #000'});
            Cufon.replace('.back');
        </script>
    </head>
    <body>
        <div class="wrapper">
            <div class="content">
                <div id="form_wrapper" class="form_wrapper">                    
                    <form class="login active">
                        <h3><center><img src="resources/images/title.png"/></center></h3>
                        <div>
                            <label>Username:</label>
                            <h:inputText value="#{loginController.user}"/>
                            <span class="error">This is an error</span>
                        </div>
                        <div>
                            <label>Password:</label>
                            <h:inputSecret value="#{loginController.password}"/>
                            <span class="error">This is an error</span>
                        </div>
                        <div class="bottom">    
                                                        <h:commandButton label="Login" value="Login" action="#{loginController.user_compare}"/>
                            <div class="clear"></div>
                        </div>
                    </form>                 
                </div>
            </div>          
        </div>  
    </body>
</html>

Это управляемый компонент

/** Bean for checking users and passwords.
 If the user enters the correct username and password 
 the user will be redirected to main.xhtml
 If not the page will refresh. */

package com.dx.sr_57;

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;


@Named("loginController")
@SessionScoped
public class user_check implements Serializable {
    private String user;
    private String password;

       public user_check(){
       }

       public user_check(String user, String password){
           super();
           this.user = user;
           this.password = password;
       }



       /** get the content of the variables from the JSF Login page */

       public String setUser(String newValue) { 
           user = newValue; 
           return user;
       }

       public String getUser(){
           return user;       
       }

       public String setPassword(String newValue) { 
           password = newValue; 
           return password;
       } 

       public String getPassword(){
           return password;
       }

       public String user_compare() {        
            return "success";        
       }
}

1 Ответ

4 голосов
/ 24 ноября 2011

Вам необходимо использовать компонент <h:form>, чтобы заставить работать входы и команды JSF.

Итак, замените

<form class="login active">
    ...
</form>

на

<h:form styleClass="login active">
    ...
</h:form>

Вы также должны исправить свои сеттеры, чтобы они были достойными сеттерами, иначе вы можете столкнуться с PropertyNotFoundException.

Итак, замените

   public String setUser(String newValue) { 
       user = newValue; 
       return user;
   }

   public String setPassword(String newValue) { 
       password = newValue; 
       return password;
   } 

на

   public void setUser(String newValue) { 
       user = newValue; 
   }

   public void setPassword(String newValue) { 
       password = newValue; 
   } 

Не связано с конкретной проблемой, тег HTML <center> устарел с 1998 года и недействителен в строгом XHTML.Убери это.Вам нужно установить CSS text-align: center на <img>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...